如何在单行上缩小Wordpress输出html代码?

时间:2012-09-23 18:20:51

标签: html wordpress compression minify

我需要加快我的Wordpress博客。我在网上搜索,但没有成功。 我想在一行(单行)上缩小或压缩输出的html代码,例如Matt Cutt's blog。 我尝试了W3TC,WP Minify和许多其他人,但没有结果。 我需要脚本,插件,功能或有效的东西。

提前致谢。

5 个答案:

答案 0 :(得分:1)

这实际上不是加快网站速度的最佳方式。如果您在模板中执行此操作,则会使文件难以读取且难以维持,速度低于1%。如果使用处理输出的插件来执行此操作,则会降低渲染速度。

确保:

  • 您使用尽可能少的插件,例如,在footer.php中复制跟踪代码(谷歌分析等)比使用插件要快得多
  • 您已经编译,清理,缩小了服务器上的CSS和JS以及正确压缩的文件。
  • 您可以将CDN用于CDN上的所有文件,例如https://developers.google.com/speed/libraries/devguide
  • 上的JQuery
  • 将mod_expire放在您的服务器上,并使用.htaccess设置远期媒体文件的过期日期。这将阻止浏览器检查文件是否已更改(您在网络流量分析中看到的所有200个状态代码)
  • 使用WP超级缓存或类似插件缓存内容
  • 安装具有足够内存的APC缓存(单个WP安装至少32M)

答案 1 :(得分:0)

如果您的插件正确加载CSS和JS文件,则没有必要说它们会使您的网站变慢。 1.另一个问题是这些插件为了呈现特定任务而调用了多少数据库。 2.该插件是否检查来自远程服务器的数据以更新像akismat和jetpack这样的数据,从而使这两个插件成为最耗费资源的。

  1. 正确编码的主题可以帮助您正确加载您的网站。比如我自己的网站(http://www.binarynote.com)在getmetrix.com中得分为99/100

答案 2 :(得分:0)

我们刚刚开发了一个C ++代码,我们可以压缩任何代码。这里给出了主要功能,供您随时参考。

//function to compress text files
void compress(char source[], char dest[])
{
  ifstream fin(source);
  ofstream fout(dest);
  char ch;
  int sp=0;
  while(fin.get(ch))
   {
      if(ch==' '||ch=='\t')
         sp++;
      else
         sp=0;
      if(ch=='\n' || ch=='\r')
         fout<<' ';
      else
          if(sp>=1)
             fout<<' ';
          else
             fout<<ch;
  } 
  fin.close();
  fout.close();
}

答案 3 :(得分:0)

以下是我在WordPress.StackExchange.com中提供的解决方案

https://wordpress.stackexchange.com/a/227896/82023

通常,在index.php中,您可以放置​​一个代码,使用正则表达式压缩HTML。我在许多地方制作和使用它并且工作正常。不是完整的内联,而是做它的工作。

<?php
/**
 * Front to the WordPress application. This file doesn't do anything, but loads
 * wp-blog-header.php which does and tells WordPress to load the theme.
 *
 * @package WordPress
 */

/**
 * Tells WordPress to load the WordPress theme and output it.
 *
 * @var bool
 */
define('WP_USE_THEMES', true);

/** Manualy compress WP by Ivijan-Stefan Stipic  **/

function compressorCF($str)
{
    // clear HEAD
    $str = preg_replace_callback('/(?=<head(.*?)>)(.*?)(?<=<\/head>)/s',
    function($matches) {
        return preg_replace(array(
            /* Fix HTML */
            '/\>[^\S ]+/s',  // strip whitespaces after tags, except space
            '/[^\S ]+\</s',  // strip whitespaces before tags, except space
            '/\>\s+\</',    // strip whitespaces between tags
        ), array(
            /* Fix HTML */
            '>',  // strip whitespaces after tags, except space
            '<',  // strip whitespaces before tags, except space
            '><',   // strip whitespaces between tags
        ), $matches[2]);
    }, $str);
    // clear BODY
    $str = preg_replace_callback('/(?=<body(.*?)>)(.*?)(?<=<\/body>)/s',
    function($matches) {
        return preg_replace(array(
            '/<!--(.*?)-->/s', // delete HTML comments
            '@\/\*(.*?)\*\/@s', // delete JavaScript comments
            /* Fix HTML */
            '/\>[^\S ]+/s',  // strip whitespaces after tags, except space
            '/[^\S ]+\</s',  // strip whitespaces before tags, except space
            '/\>\s+\</',    // strip whitespaces between tags
        ), array(
            '', // delete HTML comments
            '', // delete JavaScript comments
            /* Fix HTML */
            '>',  // strip whitespaces after tags, except space
            '<',  // strip whitespaces before tags, except space
            '><',   // strip whitespaces between tags
        ), $matches[2]);
    }, $str);
    return $str;
}

/** Loads the WordPress Environment and Template */
ob_start();
    require_once( dirname( __FILE__ ) . '/wp-blog-header.php' );
$content=ob_get_clean();
//echo $content;
echo compressorCF($content); 

答案 4 :(得分:-2)

将此代码放入function.php:

class WP_HTML_Compression
{
  // Settings
  protected $compress_css = true;
  protected $compress_js = true;
  protected $info_comment = true;
  protected $remove_comments = true;
  // Variables
  protected $html;

  public function __construct($html)
  {
    if (!empty($html))
    {
      $this->parseHTML($html);
    }
  }

  public function __toString()
  {
    return $this->html;
  }

  protected function bottomComment($raw, $compressed)
  {
    $raw = strlen($raw);
    $compressed = strlen($compressed);
    $savings = ($raw-$compressed) / $raw * 100;
    $savings = round($savings, 2);
    return '<!--HTML compressed, size saved '.$savings.'%. From '.$raw.' bytes, now '.$compressed.' bytes-->';
  }

  protected function minifyHTML($html)
  {
    $pattern = '/<(?<script>script).*?<\/script\s*>|<(?<style>style).*?<\/style\s*>|<!(?<comment>--).*?-->|<(?<tag>[\/\w.:-]*)(?:".*?"|\'.*?\'|[^\'">]+)*>|(?<text>((<[^!\/\w.:-])?[^<]*)+)|/si';
    preg_match_all($pattern, $html, $matches, PREG_SET_ORDER);
    $overriding = false;
    $raw_tag = false;
    // Variable reused for output
    $html = '';
    foreach ($matches as $token)
    {
      $tag = (isset($token['tag'])) ? strtolower($token['tag']) : null;
      $content = $token[0];
      if (is_null($tag))
      {
        if ( !empty($token['script']) )
        {
          $strip = $this->compress_js;
        }
        else if ( !empty($token['style']) )
        {
          $strip = $this->compress_css;
        }
        else if ($content == '<!--wp-html-compression no compression-->')
        {
          $overriding = !$overriding;
          // Don't print the comment
          continue;
        }
        else if ($this->remove_comments)
        {
          if (!$overriding && $raw_tag != 'textarea')
          {
            // Remove any HTML comments, except MSIE conditional comments
            $content = preg_replace('/<!--(?!\s*(?:\[if [^\]]+]|<!|>))(?:(?!-->).)*-->/s', '', $content);
          }
        }
      }
      else
      {
        if ($tag == 'pre' || $tag == 'textarea')
        {
          $raw_tag = $tag;
        }
        else if ($tag == '/pre' || $tag == '/textarea')
        {
          $raw_tag = false;
        }
        else
        {
          if ($raw_tag || $overriding)
          {
            $strip = false;
          }
          else
          {
            $strip = true;
            // Remove any empty attributes, except:
            // action, alt, content, src
            $content = preg_replace('/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)="")/', '$1', $content);
            // Remove any space before the end of self-closing XHTML tags
            // JavaScript excluded
            $content = str_replace(' />', '/>', $content);
          }
        }
      }
      if ($strip)
      {
        $content = $this->removeWhiteSpace($content);
      }
      $html .= $content;
    }
    return $html;
  }

  public function parseHTML($html)
  {
    $this->html = $this->minifyHTML($html);
    if ($this->info_comment)
    {
      $this->html .= "\n" . $this->bottomComment($html, $this->html);
    }
  }

  protected function removeWhiteSpace($str)
  {
    $str = str_replace("\t", ' ', $str);
    $str = str_replace("\n", '', $str);
    $str = str_replace("\r", '', $str);
    while (stristr($str, ' '))
    {
      $str = str_replace(' ', ' ', $str);
    }
    return $str;
  }
}


function wp_html_compression_finish($html)
{
  return new WP_HTML_Compression($html);
}


function wp_html_compression_start()
{
  ob_start('wp_html_compression_finish');
}


add_action('get_header', 'wp_html_compression_start');

https://photogrist.com它的工作正常:)