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 系列视频教程正在持续更新中,目前为了不至于让视频传播过于 ...
随机推荐
- 转:【web前端开发】浏览器兼容性处理大全
解决思路: ①.写代码的时候遵循W3C标准,按照最新稳定版本的IE或WebKit内核浏览器进行编码 ②.遇到部分无法全面解决浏览器兼容的时候,采取CSS的hack手段进行针对性微调.简单的说,CSS ...
- nyoj720 项目安排 二分+dp
思路:dp(i)表示前i个项目的最大收益,转移方程很好写dp(i) = max{ dp(k) + val(i) },val(i)表示第i个项目的价值,dp(k)表示前k个的最佳收益,k满足ed(k) ...
- 【spring-boot】spring aop 面向切面编程初接触
众所周知,spring最核心的两个功能是aop和ioc,即面向切面,控制反转.这里我们探讨一下如何使用spring aop. 1.何为aop aop全称Aspect Oriented Programm ...
- span设置宽度有效无效问题
在html中如何设定span的宽度?这看上去是个很简单的问题,似乎用style中的width属性就可以.例如, <!DOCTYPE html PUBLIC "-//W3C//DTD X ...
- TI Davinci DM6446开发攻略——根文件系统的裁剪和移植
一.补充文件系统知识 Linux根文件系统是存放tool软件.lib文件.script(脚本).配置文件.其他特殊文件.自己开发的应用程序的地方.嵌入式linux的根文件系统rootfs就像windo ...
- Flex中通过RadioButton进行切换
1.页面切换 <?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx=& ...
- Java利用递归算法统计1-6的数组排列组合数
Java利用递归算法统计1-6的数组排列组合数 1.设计源码 /** * @Title:ArrayCombination.java * @Package:com.you.data * @Descrip ...
- HighCharts之2D圆环图
HighCharts之2D圆环图 1.实例源码 Donut.html: <!DOCTYPE html> <html> <head> <meta charset ...
- C# 利用Newtonsoft.Json进行Json序列化与反序列化
我们可以通过DataContractJsonSerializer类来序列化一个对象为json字符串. public class JsonConvert<T> { public static ...
- Flex动态获取方法报错
1.错误描述 2.错误原因 由于Flex文件修改后,需要将其编译成swf文件,刚修改的方法没有编译,再加上历史缓存的原因,导致报错 3.解决办法 将Flex项目重新clean一下,并将MyEclips ...