纯代码压缩wordpress前端Html

  • 文章介绍
  • 评价建议
  • 温馨提示:
    本站为源代码分享站,源码多为网友投稿 我们没有对源码进行测试,不保证可用性、安全性以及版权归属。 因源码具有可复制性,一经购买 ,不得以任何形式退款。
    如需商业用途 请点击商业源码栏目,购买商业源码.
    客服QQ:977439673

    为了优化网站的访问速度,对网页进行压缩是非常不错的一条方法。尽管说压缩 wordpress 页面后对查看源代码来说不太友好,更可以说是惨目忍睹。但是对于那些本身前端就引用了很多js和css的主题来说是个不错的选择

    wordpress压缩前端的插件有很多,其中比较有名的就是 Autoptimize 这款轻量级插件。

    下面我将用纯代码的方式实现前端压缩,网上也有相应的代码压缩前端,但是网上的代码与最新的wordpress不兼容。

    将一下代码粘贴至主题的functions.php文件

    class FLHM_HTML_Compression
    {
    protected $flhm_compress_css = true;
    protected $flhm_compress_js = true;
    protected $flhm_info_comment = true;
    protected $flhm_remove_comments = true;
    protected $html;
    public function __construct($html)
    {
    if (!empty($html))
    {
    $this->flhm_parseHTML($html);
    }
    }
    public function __toString()
    {
    return $this->html;
    }
    protected function flhm_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 flhm_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;
    $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->flhm_compress_js;
    }
    else if ( !empty($token['style']) )
    {
    $strip = $this->flhm_compress_css;
    }
    else if ($content == '<!--wp-html-compression no compression-->')
    {
    $overriding = !$overriding; 
    continue;
    }
    else if ($this->flhm_remove_comments)
    {
    if (!$overriding && $raw_tag != 'textarea')
    {
    $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; 
    $content = preg_replace('/(\s+)(\w++(?<!\baction|\balt|\bcontent|\bsrc)="")/', '$1', $content); 
    $content = str_replace(' />', '/>', $content);
    }
    }
    } 
    if ($strip)
    {
    $content = $this->flhm_removeWhiteSpace($content);
    }
    $html .= $content;
    } 
    return $html;
    } 
    public function flhm_parseHTML($html)
    {
    $this->html = $this->flhm_minifyHTML($html);
    if ($this->flhm_info_comment)
    {
    $this->html .= "\n" . $this->flhm_bottomComment($html, $this->html);
    }
    }
    protected function flhm_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 flhm_wp_html_compression_finish($html)
    {
    return new FLHM_HTML_Compression($html);
    }
    function flhm_wp_html_compression_start()
    {
    ob_start('flhm_wp_html_compression_finish');
    }
    add_action('get_header', 'flhm_wp_html_compression_start');
    

     

    这样你会发现前端已经压缩,并且兼容最新版的wordpress。

    注意

    如果出现js错

    //将这段改为
    protected $flhm_compress_js = true;
    protected $flhm_compress_js = false;

    Leave a Reply

  • 如本资源侵犯了您的权益,[email protected]!我们将在收到邮件的1个小时内处理完毕。

  • 本站仅为平台,发布的资源均为用户投稿或转载!所有资源仅供参考学习使用,请在下载后的24小时内删除,禁止商用!

  • OKMG(芒果源码)助力正版,如您有自己的原创产品,可以联系客服投稿,代理出售!

  • OKMG(芒果源码)客服QQ:29139260

  • OKMG(芒果源码)商务电话(仅对企业客户/个人用户请联系QQ客服):010-86463891

  • 请注意:本站不提供任何免费的技术咨询服务,为了节约时间,下载前 请确认自己会技术
  • 免责声明 芒果源码,一个精品商业网站源码分享平台 WWW.OKMG.CN 1. 本站所有资源来源于用户上传和网络,均不允许转载,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除! 3. 如发现会员转载本站资源文章,本站有权封禁会员账号! 4. 不得使用于非法商业用途,不得违反国家法律。否则后果自负! 5. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 6. 如有链接无法下载、失效或广告,请联系管理员处理! 7. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 8. 如遇到加密压缩包,默认解压密码为"www.okmg.cn",如遇到无法解压的请联系管理员! 9.本站客服:29139260

    售后服务:

    • 售后服务范围 1、商业模板使用范围内问题免费咨询
      2、源码安装、模板安装(一般 ¥50-300)服务答疑仅限SVIP用户
      3、单价超过200元的模板免费一次安装,需提供服务器信息。
      付费增值服务 1、提供dedecms模板、WordPress主题、discuz模板优化等服务请详询在线客服
      2、承接 WordPress、DedeCMS、Discuz 等系统建站、仿站、开发、定制等服务
      3、服务器环境配置(一般 ¥50-300)
      4、网站中毒处理(需额外付费,500元/次/质保三个月)
      售后服务时间 周一至周日(法定节假日除外) 9:00-23:00
      免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: [email protected]),我们会及时删除,给您带来的不便,我们深表歉意!

    Hi, 如果你对这款模板有疑问,可以跟我联系哦!

    联系客服
    开通VIP 享更多特权,建议使用 QQ 登录
    /** * 项目名称:用户离开标题切换 */