性能优化及坑爹的 W3 Total Cache
发布人:一全科技 来源:大猫の意淫筆記 发布于:2010-12-07 23:50:08 浏览:1310

(miao)里经常讨论性能优化的问题,通俗点就是网页打开速度。

比较影响速度的因素有:

1.后台(PHP+MySQL):根据请求,运行语句,操作数据库,生成页面返回。

效率低的或查询量大会让cpu飙升

2.线路:Ping命令大家都会用,这时间就代表一个来回。

Ping偶尔会Timeout超时,也就是所谓的丢包,常规原因有2种:真丢,假丢。例如有些服务器设置侦测到集中密集的ICMP包会选择性的丢弃掉,10次里丢1次完全不同于10次访问有一次打不开,网页是走TCP/IP需要3次握手。Ping相对重要的参数就是时间了,国外一般200-300ms左右,国内一般100内

3.前台:闻名的yslow34rules,做了这些简单的调整,可以明显的提速25%-50%

只需要装上Firefox,再继续搜Firebug插件和ySlow插件。

打开页面,按下[F12],点[yslow]点[runtest]即可分析当前页面。搞优化和搞SEO一样,没有绝对,只有相对的平衡,为了可维护性以及可用性牺牲的性能是比较值得的,而花大力气收效甚微的可往后靠。

进入正题,针对前后台和线路的解决方案

线路解决方案把服务器放在国内是最快的,缺点如下。

1.备案(我是良民,备案除了浪费时间,可以克服)

2.安全(源码被盗,甚至密码泄露,网站被埋后门等时有耳闻,蝙蝠侠说过,能力越大责任越大。)

任何root只需要10个字母的系统自带命令就能监听未加密的数据包例如ftp,对,密码也会直接显示。(请各位同学尽量用加密连接代替,例如sftpscphttps之类的)

3.你懂得,多说无益,小时候我数据蒸发过无数回,皆因同机房其他不良站连带。国外空间速度还能接受,价格还便宜,跟对管理员什么的,有肉吃!唯一的缺点就是一旦发生啥大事,就会假装线路有问题,抽抽,概率较低每年几次。

例如你正在看俺的这个帖子,他就位于达拉斯机房,不快,也不慢,图个稳定。
 

后台解决方案:静态化

也就是所谓的缓存,把数据库查询和PHP生成的页面生成html静态页面,一劳永逸。

wordpress里有缓存插件专门搞这些的(WPSuperCache安装与设置方法

前台解决方案:按照yslow给的建议走一遍

根据我的经验,随便搞搞并效果好的是http请求数,过期时间,文件体积,页面DOM节点太复杂,脚本一大堆这几个。

http请求数(非常明显):

例如一个页面里有两张图片三个样式四个脚本,用户打开的时候就会产生1+2+3+4=10个请求。具体不分析,在文件比较小的情况下,例如表情头像什么的,请求5张10K的图片比请求一张50K的图片要慢的多。这种可以用CSSSprite雪碧技术去选择性优化(切勿盲目雪碧,偶尔也要来点可乐杀杀)。

多个样式表或脚本文件,方便的话,人肉复制粘贴合并,注意先后顺序,先加载的放前面。

过期时间(非常明显):

管理员一般会给apache安装mod_expires,按照文件类型设置过期时间,例如(miao)设置了图片为一年过期,一旦这张图片存在于电脑的缓存里,电脑查询到还没过期,就直接取本地,跳过了请求也跳过了线路问题。浏览器缓一般只有几十MB,有新内容放不下会按照时间顺序删掉比较老的(即使没过期)。那会儿还专门做了个缓存生成器测试过,唯一的缺点就是同名文件服务器更新了,本地电脑不鸟他,可以用时间戳搞定。

Google新出的mod_pagespeed使用换文件名形式来规避这个问题。

文件体积(非常明显):

下过片的同学都知道,mkv和rmvb的区别我就不多说了。解决方案就是搞个gzip压缩,一般100k的文本文件例如样式和脚本能压缩到30-50K

服务器在压缩后会在某个目录先留着,第二次请求的时候就不用再压缩了,所以CPU占用可以忽略。

例如(miao)默认会按照文件类型压缩:脚本、样式、网页什么的。

脚本一大堆+页面太复杂(明显)

经常遇到有同学装了不少插件,插件调用了很多脚本文件

曾有一个页面同时加载了YUIJqueryPrototypeAE.。.(AE是什么框架?哈哈)

好吧,这么多实现起来有难度啊。非技术流的同学可咋办好?不用怕!WordPress有个插件叫W3TotalCache。他直接把前后台都优化了,出发点是好,估计技术还不行。只要装了W3TotalCache,肯定比不装还要卡。遇到好几个站了,用的就是W3TotalCache,CPU占用异常高!!!

综上所述:

不要用W3TotalCache(方向对,但做的很烂),用WPSuperCache。

作者:大猫の意淫筆記

文章来源:http://ooxx.me/w3-total-cache-sucks.orz  转载请注明作者与文章出处链接。