# wordpress压缩前端页面的可爱小代码

- Link: https://yjyj.net/learn/wordpress-learn/4738.html
- Published: 2014-10-06T20:01:55+08:00
- Author: 小 虾

⚡ 生猛大蝦编辑部 · 30 秒核心看点

 * 不用插件也能压缩前端 HTML，直接在 Functions.php 里加输出缓冲代码即可。
 * 对已生成缓存的站点更友好，避免为压缩 HTML 额外依赖复杂插件功能。
 * 可用特定注释包住不想压缩的代码段，兼顾体积优化与页面兼容性。

像哥这样的屌丝站长娃子,没钱去搞起流弊配置的服务器或者vps,就只好在程序上下手啦.
 
删除所有前端页面内的空格,是一个不错的节约页面字节大小的办法. 之前哥一直使用Autoptimize
这个腻害的插件,它不仅能够压缩html,还能把css与js合并.但是哥的小囧客圈因为使用了cos-
html-cache生成html,每次更新缓存都需要重新生成页面. 这样下来,就仅仅用到压缩html的
功能了,如果是这样,那不如使用下面的可爱的代码版:

代码添加至 Functions.php

    ```decode:true
    /*  
    *压缩html代码‎  
    */  
    function wp_compress_html()   
    {   

    function wp_compress_html_main ($buffer)   
    {   
        $initial=strlen($buffer);   
        $buffer=explode("<!--wp-compress-html-->", $buffer);   
        $count=count ($buffer);   

        for ($i = 0; $i <= $count; $i++)   
        {   
            if (stristr($buffer[$i], '<!--wp-compress-html no compression-->'))   
            {   
                $buffer[$i]=(str_replace("<!--wp-compress-html no compression-->", " ", $buffer[$i]));   
            }   
            else  
            {   
                $buffer[$i]=(str_replace("\t", " ", $buffer[$i]));   
                $buffer[$i]=(str_replace("\n\n", "\n", $buffer[$i]));   
                $buffer[$i]=(str_replace("\n", "", $buffer[$i]));   
                $buffer[$i]=(str_replace("\r", "", $buffer[$i]));   

                while (stristr($buffer[$i], '  '))   
                {   
                $buffer[$i]=(str_replace("  ", " ", $buffer[$i]));   
                }   
            }   
            $buffer_out.=$buffer[$i];   
        }   
        //$final=strlen($buffer_out);   
        //$savings=($initial-$final)/$initial*100;   
        //$savings=round($savings, 2);   
        //$buffer_out.="\n<!--压缩前的大小: $initial bytes; 压缩后的大小: $final bytes; 节约：$savings% -->";   
        return $buffer_out;   
    }   

    ob_start("wp_compress_html_main");   
    }   

    add_action('get_header', 'wp_compress_html');
    ```

不压缩部分的相应代码改为：

    ```decode:true
    <!--wp-compress-html no compression-->
    <p> 在注释的保护下 WP HTML Compression 将不会压缩此段代码</p>
    <!--wp-compress-html no compression-->
    ```

感谢:http://www.mywpku.com/wp-html-compression.html

❓ 延伸问答与排错指南（FAQ）

WordPress 前端 HTML 怎么压缩？

可在主题的 Functions.php 中加入输出缓冲压缩函数，自动去掉空格、换行和制表符，从而
减小页面体积。适合只想做 HTML 压缩、不想引入复杂插件功能的站点。

缓存页面还能用这种压缩代码吗？

可以。文章场景里就是因为页面已由缓存机制生成，插件的合并 CSS/JS 功能用不上，所以
改用纯 HTML 压缩代码更轻量，也更贴合实际需求。

如何让某段代码不被压缩？

在需要保留的内容前后加上指定注释标记即可，压缩函数会识别这些标记并跳过该段。这样
能避免特殊代码、格式敏感内容被误处理。

📚 【[WordPress 学习](https://yjyj.net/category/learn/wordpress-learn)】专栏延伸
阅读与热门精选（[全站文章归档](https://yjyj.net/archive)）：

 * [wordpress不同分类显示不同的sidebar](https://yjyj.net/learn/wordpress-learn/4735.html)
 * [WordPress 4.0 !](https://yjyj.net/learn/wordpress-learn/4724.html)
 * [WordPress 获取文章中的第一个链接](https://yjyj.net/learn/wordpress-learn/4740.html)
 * [在 WordPress 菜单显示指定时间文章更新数量 类似 bilibili 气泡](https://yjyj.net/learn/wordpress-learn/4742.html)
 * 热门必读[俩月了, DMIT 终于补货了!](https://yjyj.net/share/7795.html)
 * 热门必读[跨境电商 AI Prompts](https://yjyj.net/ad/7723.html)
