大猫 (Madao) - まるでダメなおっさん

Tag Archives

3 Articles

性能优化及坑爹的 W3 Total Cache

by bigCat 51 Comments

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

比较影响速度的因素有:

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

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

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

(Ping偶尔会Timeout超时,也就是所谓的丢包,常规原因有2种:真丢,假丢

例如有些服务器设置侦测到集中密集的ICMP包会选择性的丢弃掉

10次里丢1次完全不同于10次访问有一次打不开,网页是走 TCP/IP 需要3次握手

Ping 相对重要的参数就是时间了,国外一般200-300ms左右,国内一般100内)

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

只需要装上Firefox,再继续搜 Firebug插件和 ySlow 插件
打开页面,按下 [F12] ,点 [yslow] 点 [run test] 即可分析当前页面

搞优化和搞SEO一样,没有绝对,只有相对的平衡,为了可维护性以及可用性牺牲的性能是比较值得的,而花大力气收效甚微的可往后靠

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

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

1.备案(我是良民,备案除了浪费时间,可以克服)
2.安全(源码被盗,甚至密码泄露,网站被埋后门等时有耳闻
蝙蝠侠说过,能力越大责任越大
任何root只需要10个字母的系统自带命令就能监听未加密的数据包例如ftp,对,密码也会直接显示
请各位同学尽量用加密连接代替,例如sftp scp https之类的)
3. 你懂得,多说无益,小时候我数据蒸发过无数回,皆因同机房其他不良站连带

国外空间速度还能接受,价格还便宜,跟对管理员什么的,有肉吃!
唯一的缺点就是一旦发生啥大事,就会假装线路有问题,抽抽,概率较低每年几次
例如你正在看俺的这个帖子,他就位于达拉斯机房,不快,也不慢,图个稳定

后台解决方案: 静态化

也就是所谓的缓存,把数据库查询和PHP生成的页面生成html静态页面,一劳永逸
wordpress 里有缓存插件专门搞这些的 (WP Super Cache 安装与设置方法)

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

前文有提到

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

http 请求数(非常明显):

例如一个页面里有两张图片三个样式四个脚本,用户打开的时候就会产生1+2+3+4=10个请求
具体不分析,在文件比较小的情况下,例如表情头像什么的,请求5张10K的图片比请求一张50K的图片要慢的多
这种可以用 CSS Sprite 雪碧技术去选择性优化(切勿盲目雪碧,偶尔也要来点可乐杀杀)
多个样式表或脚本文件,方便的话,人肉复制粘贴合并,注意先后顺序,先加载的放前面

过期时间(非常明显):

管理员一般会给apache安装mod_expires,按照文件类型设置过期时间,例如(miao)设置了图片为一年过期
一旦这张图片存在于电脑的缓存里,电脑查询到还没过期,就直接取本地,跳过了请求也跳过了线路问题

浏览器缓一般只有几十MB,有新内容放不下会按照时间顺序删掉比较老的(即使没过期)
那会儿还专门做了个缓存生成器(擦车)测试过

唯一的缺点就是同名文件服务器更新了,本地电脑不鸟他, 可以用时间戳搞定
Google 新出的 mod_pagespeed 使用换文件名形式来规避这个问题

文件体积(非常明显):

下过毛片的同学都知道,mkv和rmvb的区别我就不多说了
解决方案就是搞个 gzip 压缩,一般 100k 的文本文件例如样式和脚本能压缩到30-50K
服务器在压缩后会在某个目录先留着,第二次请求的时候就不用再压缩了,所以CPU占用可以忽略
例如(miao)默认会按照文件类型压缩: 脚本 样式 网页什么的

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

经常遇到有同学装了不少插件,插件调用了很多脚本文件
蹭有一个页面同时加载了YUI Jquery Prototype AE…(AE是什么框架?哈哈)
解决方案就是… 自己选一个炫和快的平衡点

好吧,这么多实现起来有难度啊

非技术流的同学可咋办好?

不用怕! WordPress有个插件叫 W3 Total Cache
他直接把前后台都优化了
出发点是好,估计技术还不行
只要装了 W3 Total Cache ,肯定比不装还要卡

奶奶的,遇到好几个站了,用的就是W3 Total Cache
CPU占用异常高!!!

搜了下也有一堆测评
Use WP Super Cache for WordPress speed, not W3 Total Cache (评论闪闪发光,很多技术细节)
WordPress load test part 2 – amendment
WordPress Cache Plugin Benchmarks

W3 Total Cache versus WP Super Cache

综上所述:
不要用 W3 Total Cache (方向对,但做的很烂)
用 WP Super Cache (WP Super Cache 安装与设置方法)

WP Super Cache 安装与设置方法

by bigCat 251 Comments

wordpress 的插件越来越多,速度也越来越慢,咋整?

静态化!

今天主要是把流程 Step by Step 一下,不用理解为啥这么设置, 只需要知道设置后会变的很快

所谓提前优化是万恶之源的意思就是说,之前网站做的越烂,优化的空间就越多
和老板说看,之前多烂多烂,俺给你省了多少多少钱,一般都能拿奖金
静态化也一样,之前一大堆插件,开个页面上百次MYSQL查询,或烂人写的没效率SQL会让人不禁抓栏杆撕床单

WP Super Cache 并不是100%静态化,不过这个不重要,他把最卡的部分搞定了即可

WP Super Cache 他唯一的缺点就是如果你在改主题或搞啥插件,后台设置了前台看不出变化,为毛?下面有解决方案

OK, let’s gou

  1. 首先,永久连接不能使用默认格式
  2. 修改永久链接格式,中文推荐采用 /%post_id%.html (这下你知道我的.orz哪里来了吧)
    如果你和我一样蛋疼愿意为每篇文章写一个英语的post slug
    建议采用这样的格式:/%postname%.html (百分号外面的随意写)


这里我一二三四五六七都标注了就不介绍了吧,常规装插件也是这个套路

那些个神马ftp时代都已经过去鸟过去鸟


装完后激活一下


激活了,但他说还需要去设置一把, Rock it

凡是推荐的都打钩,无脑输出嘛

需要注意的是(miao)的用户不要开Compress pages so they’re served more quickly to visitors. (Recommended)

因为默认已经压缩了,再压缩一次一是可能乱码,而是增加不必要的损耗变得更慢

需要注意的是Don’t cache for known users的意思是对已经登录的用户不缓存

这就解决的后台改主题无法更新的缺点

也就是说,平时的时候这个选项不打钩,当你需要改主题或调试插件什么时候就打他,改完了再去掉

因为我们选择了最快的mod_rewrite 方式,所以继续往下拉,会看到一坨螺旋状大黄色的容器,点里头的update mod_rewrite rules

不出意外会给个绿色的确认,某某.htaccess被插了…

有个激动人心的功能上几个版本才加进来的叫Preload,具体有兴趣可以看我写过的Preload 就不累赘再说一次了

全都搞定后去前台页面,右键查看源代码,拉到最下面,会有三行状态告诉你已经搞定鸟

FAQ:

Q: 我流量那么小,有必要搞这个么?
A: 搞这个纯粹为了自High,和流量没关系,例如打开自己的网站快个两三秒不是一键很爽的事咩?

Q: 那个过期时间我能改咩?
A: 建议用默认的

Preload 模式下更改过期时间,会导致全站文件一遍遍的重新生成,这是完全没必要的
普通模式下更改过期时间,太短或太长都会导致CPU飙升,得不偿失,除非你流量大一个月五六千才有必要

Q: 我发表新日志,或访客留言后他会全站再静态化一次么?
A:不用担心,使用起来和没有装是一样的,有内容更新它会重新生成对应的页面的静态文件,没有更新的就没必要再去重新生成一次

Q: 这个对SEO有没有影响?
A: 有,SEO里爬虫对页面打开速度比较敏感,

常规模式下第一次访问才生成,到期后回收掉,也就是说第一次比较慢
Preload模式先给你都静态了,不管何时访问都快,对SEO更好

Q: 乱码啦乱死人啦~~~

A: 关掉 Compress pages so they’re served more quickly to visitors. (Recommended)

还有啥Q请留言

预缓存(Preload the cache) WP Super Cache

by bigCat 62 Comments

不知道 wp-super-cache 的建议看一下最佳 WordPress 缓存插件:WP Super Cache补补课

这会儿后台直接升级Wordpress 3.0 花了1秒钟,感觉巨爽
wp-super-cache 顺手也升了,有几个特性还是要提一下

下面是翻译自官方blog的预缓存(Preload cache) 介绍
Preload the cache in WP Super Cache

看到本周帅气的下垂了么? 我上周日启用了 WP Super Cache 的预缓存(preload cache),这玩意儿明显的降低了服务器的负载,创建缓存时会有个峰值,很黄很暴力

我一直不鼓励用户使用预缓存,主要是因为文件数量会导致一些问题,如果你有几千个缓存文件,硬盘挂了会需要很长时间才能恢复.
(注: 有些主机商会限制文件数)
但反过来说,Google把速度作为一个网站的衡量标准之一.在过去,这个插件会忽略爬虫,因为爬虫每次只访问每个页面一次,缓存相对它们是毫无意义的.所有的页面都应该在 Google 还没开始爬过来之前就缓存好
(注: WP Super Cache 工作流程是第一次请求页面时把PHP+MySQL处理结果生成静态页面,再次访问时甚至都不用执行一行代码 )

如图所示,一旦你启动预缓存,它会挂载在 wp-cron 去获取100 个帖子, 过10秒后再去获取100个帖子 直到读完所有帖子. 它同时会禁止掉老帖子的垃圾回收机制,但有评论和新帖子的时候还是会干掉一些适当的缓存文件
目前它只缓存 文章页 (注:is_single()那种,中文差不知道咋翻译),貌似没啥必要去缓存 archive 或 tag 页,因为很多站已经写了 robots.txt去忽略这些页面

这次 WP Super Cache 的更新包括了

  1. 更好的支持移动设备插件,例如 MobilePress (注:之前会有电脑访问出现手机界面的bug,不知道现在如何,有遇到问题的朋友请留言)
  2. 增加了缓存测试功能(注:之前只能通过查看页面源代码最底下的注释了解情况)
  3. 可设置只在评论更新的时候更新缓存,而不是前台或相关页面
  4. Works in WordPress 3.0.

它还有一堆 bug 要修, 和其他功能要增加

愿意当小白鼠的可以尝试开发版本 from the download page ,有问题就反馈到 support forum

=====补刀======================

如何安装 WP Super Cache ?
答: 进入后台,选择左侧 plugins -> Add New ->输入 WP Super Cache 点 Search Plugs -> Install Now

小博客很适合开启全站预缓存
个人觉得没必要设置定时重新生成全站缓存,如果你老帖子变动不频繁的话
因为即使老帖子变动了,对应的也会自动生成

有同学问,我网站规模太小,是不是不需要缓存?
答: 缓存是为了自己爽, 提速不是一个段位

=====补2刀=====================

使用 (miao) 服务器的同学不用开启 gzip ,偶已经配置了默认压缩指定文件类型
也不用担心文件数的问题, 偶木有做限制

QQREADERD1F79C5048631991