WordPress源代码压缩优化及常见问题的解决
先来看看效果:

意思就是让你的源代码看起来都挤在一起,这样如果别人想看你的源代码的话就不容易看懂了,(当然如果别人实在想看的话也可以通过某些软件的整理代码的功能来实现,比如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源代码压缩优化及常见问题的解决的更多相关文章
- Google Pagespeed,自动压缩优化JS/CSS/Image
Google Pagespeed,自动压缩优化JS/CSS/Image 浏览: 发布日期:// 分类:技术分享 关键字: Nginx Appache Pagespeed 自动压缩优化JS/CSS/Im ...
- Apache配置压缩优化时报错——undefined symbol: inflateEnd
Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...
- vs 2013 常用快捷键及常见问题的解决
1. 代码编辑 关闭当前文档:ctrl + F4 打开光标所在位置的文档:ctrl + G(shift + g) 返回上次编辑的位置:ctrl + -(键盘数字键 0 后的那个按键) 移动光标所在的行 ...
- Nacos 常见问题及解决方法
Nacos 开源至今已有一年,在这一年里,得到了很多用户的支持和反馈.在与社区的交流中,我们发现有一些问题出现的频率比较高,为了能够让用户更快的解决问题,我们总结了这篇常见问题及解决方法,这篇文章后续 ...
- NHibernate常见问题及解决方法
NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end ...
- 压缩Sqlite数据文件大小,解决数据删除后占用空间不变的问题
最近有一网站使用Sqlite数据库作为数据临时性的缓存,对多片区进行划分 Sqlite数据库文件,每天大概新增近1万的数据量,起初效率有明显的提高,但历经一个多月后数据库文件从几K也上升到了近160M ...
- php分10个不同等级压缩优化图片
今天找到一个php写的压缩图片程序,可以分10个等级(0-9)来压缩,0等级时压缩比率不是很大,图片不会失真:随着压缩等级不断增大,图片会变得越来越不清晰,通常压缩后图片大小可以减少到原来的50%,压 ...
- WebView加载本地html、js文件常见问题及解决办法
声明:基于android studio平台,php语言搭建服务器 目录: 一.JavaScript脚本语言没有反应 二.alert无法弹出 三.html页面之间不能跳转 四.屏幕缩放没有达到预期效果 ...
- WordPress SEO ☞ WordPress网站终极优化指南
原文地址:http://www.eastdesign.net/wordpress-seo/ 最新消息,东方设计学院 WordPress SEO 系列视频教程正在持续更新中,目前为了不至于让视频传播过于 ...
随机推荐
- C语言链表的建立、插入和删除
先看下向链表中插入节点 下面这个是删除链表节点
- java url demo
// File Name : URLDemo.java import java.net.*; import java.io.*; public class URLDemo { public stati ...
- POJ - 2912 Rochambeau 种类并查集
题意:有三组小朋友在玩石头剪刀布,同一组的小朋友出的手势是一样的.这些小朋友中有一个是裁判,他可以随便出手势.现在给定一些小朋友的关系,问能否判断出裁判,如果能最早什么时候能够找到裁判. 思路:枚举每 ...
- 如何更改Ubuntu的root密码
安装Ubuntu系统时,只提示了设定用户密码,该密码可用于普通用户暂时获取root的权限,执行一些需要root权限的操作,而没有要求我们设置root密码,在需要用到root密码时,却想不起来,很尴尬啊 ...
- PaddlePaddle︱开发文档中学习情感分类(CNN、LSTM、双向LSTM)、语义角色标注
PaddlePaddle出教程啦,教程一部分写的很详细,值得学习. 一期涉及新手入门.识别数字.图像分类.词向量.情感分析.语义角色标注.机器翻译.个性化推荐. 二期会有更多的图像内容. 随便,帮国产 ...
- R︱并行计算以及提高运算效率的方式(parallel包、clusterExport函数、SupR包简介)
要学的东西太多,无笔记不能学~~ 欢迎关注公众号,一起分享学习笔记,记录每一颗"贝壳"~ --------------------------- 终于开始攻克并行这一块了,有点小兴 ...
- 实战DeviceIoControl 之六:访问物理端口
Q 在NT/2000/XP中,如何读取CMOS数据? Q 在NT/2000/XP中,如何控制speaker发声? Q 在NT/2000/XP中,如何直接访问物理端口? A 看似小小问题,难倒多少好汉! ...
- linux c语言 select函数用法
linux c语言 select函数用法 表头文件 #i nclude<sys/time.h> #i nclude<sys/types.h> #i nclude<unis ...
- Linux显示2015年日历表
Linux显示2015年日历表 youhaidong@youhaidong-ThinkPad-Edge-E545:~$ cal 2015 2015 一月 二月 三月 日 一 二 三 四 五 六 日 一 ...
- Ubuntu14.04下安装Flash Player
Ubuntu14.04下安装Flash Player youhaidong@youhaidong:~$ sudo apt-get install flashplugin-nonfree [sudo] ...