先来看看效果:

意思就是让你的源代码看起来都挤在一起,这样如果别人想看你的源代码的话就不容易看懂了,(当然如果别人实在想看的话也可以通过某些软件的整理代码的功能来实现,比如IDEA的Ctrl+alt+L快捷键)。
最开始的时候我以为这个效果是网上的一些所谓的压缩软件实现的,比如什么GZippy和wp super
cache,但是GZippy这种压缩插件只是压缩实际网页的大小,而不能让网页的源代码看起来很紧凑。不过网上有压缩源代码的方法,后来发现,网上那些
方法虽然能让源代码看起来很紧凑,也能实际压缩一点网页的大小,但是也会引起很多的问题,而且压缩网页大小的效果并不好。

不过没关系,我们要的就是让源代码看起来很紧凑的效果。
下面我就说说压缩的方法和常见问题的解决方式:
压缩网页的代码:
将这些代码插入到function.php的之间即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
//压缩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');

但是后来发现这个功能让其他的一些功能出错了,比如js失效。(最开始我因为不知道什么原因还重新安装了一次WordPress)
不过没关系,网上也有解决办法,既然js失效了,我们可以让js代码不被压缩即可,只要把不想被压缩的代码(主要是js代码)放在下面的代码中即可。其实可以通过某些在线压缩js的网站来手动压缩js代码,然后替换原来的js代码也起到相同的效果。

1
2
3
<!--wp-compress-html--><!--wp-compress-html no compression-->
此处代码不会被压缩,主要是避免压缩带来的错误,比如JS错误
<!--wp-compress-html no compression--><!--wp-compress-html-->


有一个问题,我使用了代码高亮插件SyntaxHighlighter,然后发现压缩之后我在文章中插入的高亮代码也全部都被挤在了一起而且样式也都失效
了,因为这个功能也把CSS和js都压缩了。不过网上也有解决的办法,就是把下面的代码插入到function.php的之间即可,

1
2
3
4
5
6
7
8
function unCompress($content) {
    if(preg_match_all('/(crayon-|<\/pre>)/i', $content, $matches)) {
        $content = '<!--wp-compress-html--><!--wp-compress-html no compression-->'.$content;
        $content.= '<!--wp-compress-html no compression--><!--wp-compress-html-->';
    }
    return $content;
}
add_filter( "the_content", "unCompress");

不过这个只能让高亮代码的换行效果生效,但是样式都失效了,界面很难看,这一点我还不能解决。

经过长期观察,发现js压缩报错无外乎2种情况:
1.js代码的作者偷懒,简写了某些语句。比如js的if结构一般是:

1
2
3
4
5
if(条件){
    语句1;
}else{
    语句2;
}

可有些人写js的时候,不知道是自视高超还是偷懒,就写成如下形式:

1
2
3
4
if(条件)
    语句1;
else
    语句2;

这种偷懒格式,一旦压缩,就会破坏逻辑判断从而报错!如果压缩报错,并发现这种偷懒模式,只要写全代码即可。
2.js代码中存在//注释语句,比如:

1
2
3
4
5
6
7
<script type="text/javascript">
function test(){
//定义一个变量:
var string1 = 'newstring';
alert(string1);
}
</script>

这种代码,一旦压缩就会变成这样:

1
<script type="text/javascript">function test(){//定义一个变量:var string1 = 'newstring';alert(string1);}</script>

由于这个注释是半闭合的,因此压缩后就会伤及无辜,把后面的语句一起给注释了!从而报错!!
解决办法有2种:
i. 删除半闭合注释即可;
ii. 使用/* */ 全封闭注释 ;

PS:
一开始我看见这个功能很牛逼,我也想拿这个来装逼,但是后来发现这个逼不能装啊,虽然还是有很多网站使用了这个功能,但是我觉得还是会出现很多的错误,比
如js错误,虽然你可以通过上面的方法让一些js代码不被压缩,但是不能保证所有的js代码都不被压缩,而且又怕修改的时候出错,比如你新添加了插件就有
自己的js文件,那么你怎么能够保证所有的js文件你都可以保护好。我之前因为压缩了网页,然后我网页上方的轮播图效果不见了,我开始还不知道是什么原
因,所以害我后来重装了一次WordPress,后来才知道是这个功能搞的鬼。

所以结论就是这个功能其实不推荐大家使用。

参考网址:http://zhangge.net/4731.html

WordPress源代码压缩优化及常见问题的解决的更多相关文章

  1. Google Pagespeed,自动压缩优化JS/CSS/Image

    Google Pagespeed,自动压缩优化JS/CSS/Image 浏览: 发布日期:// 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Im ...

  2. Apache配置压缩优化时报错——undefined symbol: inflateEnd

    Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...

  3. vs 2013 常用快捷键及常见问题的解决

    1. 代码编辑 关闭当前文档:ctrl + F4 打开光标所在位置的文档:ctrl + G(shift + g) 返回上次编辑的位置:ctrl + -(键盘数字键 0 后的那个按键) 移动光标所在的行 ...

  4. Nacos 常见问题及解决方法

    Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...

  5. NHibernate常见问题及解决方法

    NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...

  6. 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题

    最近有一网站使用Sqlite数据库作为数据临时性的缓存,对多片区进行划分 Sqlite数据库文件,每天大概新增近1万的数据量,起初效率有明显的提高,但历经一个多月后数据库文件从几K也上升到了近160M ...

  7. php分10个不同等级压缩优化图片

    今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压 ...

  8. WebView加载本地html、js文件常见问题及解决办法

    声明:基于android studio平台,php语言搭建服务器 目录: 一.JavaScript脚本语言没有反应 二.alert无法弹出 三.html页面之间不能跳转 四.屏幕缩放没有达到预期效果 ...

  9. WordPress SEO ☞ WordPress网站终极优化指南

    原文地址:http://www.eastdesign.net/wordpress-seo/ 最新消息,东方设计学院 WordPress SEO 系列视频教程正在持续更新中,目前为了不至于让视频传播过于 ...

随机推荐

  1. 阿里巴巴十年Java架构师分享,会了这个知识点的人都去BAT了

    1.源码分析专题 详细介绍源码中所用到的经典设计思想,看看大牛是如何写代码的,提升技术审美.提高核心竞争力. 帮助大家寻找分析源码的切入点,在思想上来一次巨大的升华.知其然,并知其所以然.把知识变成自 ...

  2. 原生javascript 的MAP使用

    var map = {}; // Map map = new HashMap();map[key] = value; // map.put(key, value);var value = map[ke ...

  3. js数据类型的判断方法

    判断js中的数据类型有一下几种方法:typeof.instanceof. constructor. prototype. $.type()/jquery.type(),接下来主要比较一下这几种方法的异 ...

  4. 阿里舆情︱舆情热词分析架构简述(Demo学习)

    本节来源于阿里云栖社区,同时正在开发一个舆情平台,其中他们发布了一篇他们所做的分析流程,感觉可以作为案例来学习.文章来源:觉民cloud/云栖社区 平台试用链接:https://prophet.dat ...

  5. MySQL通过localhost无法连接数据库的解决

    问题:一台服务器的PHP程序通过localhost地址无法连接数据库,但是如果设置为127.0.0.1则可以正常连接,连接其他数据库服务器也正常.MySQL的权限设置正确,且通过mysql命令行客户端 ...

  6. R语言︱情感分析—词典型代码实践(最基础)(一)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 笔者寄语:词典型情感分析对词典要求极高,词典中 ...

  7. Extjs 4.0 Window

    1.JSON代码 Ext.MyWindow=Ext.extend(Ext.Window ,{ xtype:"window", title:"我的窗口", wid ...

  8. freemarker报错之七

    1.错误描述 五月 30, 2014 11:33:57 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  9. nest exception is java.sql.SQLException:ORA-01476:除数为0

    1.错误描述 nest exception is java.sql.SQLException:ORA-01476:除数为0 2.错误原因 3.解决办法

  10. emWin 2天速成实例教程000_如何快速入门ucGUI/emWin

    备注:(1)打开工程目录下的"Exe\GUISimulationDebug.exe"即可看到效果.(2)看完教程000-005就基本会用emWin做项目,其他章节可以需要时再参考. ...