又少2秒,进一步优化访问速度
昨晚至今晨,彻底改造了一下本站的“缩略图”系统,让页面显示速度又平均减少了约2秒种。
30号半夜,接到DreamHost 合租伙伴的提醒,说Freeimer 的上月流量超过30G,平均1G/天;作为一个访问量并不大的博客平台,这是个很吓人的数据。在没有放任何音乐、软件、压缩包的情况下,排除了被P2P 的可能;于是怀疑图片被盗链了,但是我从一开始就很注意这个问题,使用的Hotlinking Protection 这个插件连Google Reader 等RSS 订阅工具都没放过,似乎可能性也不大。最后扔给我一条数据“272668, 80.54%, .jpg [JPEG graphics]”——有272668 次请求,占全部访问流量的80.54%,都来自于jpg 文件。
开始想当然的以为是Image Max Width 这个插件的问题,它的用处是自动缩放文章图片尺寸,也是唯一一个和文章图片有关的插件。于是立即停用,改成了纯CSS 来控制图片尺寸,图片显示效果基本一样,过渡还算平稳,以为问题解决了……
但1号晚上继续查看主机日志,着实吓了一跳,情况依旧:
Successful requests: 555,292 (190,411)
Average successful requests per day: 18,501 (27,201)
Successful requests for pages: 77,359 (30,014)
Average successful requests for pages per day: 2,577 (4,287)
Failed requests: 744 (19)
Redirected requests: 1,599 (38)
Distinct files requested: 2,395 (600)
Distinct hosts served: 3,717 (386)
Data transferred: 33.11 gigabytes (8.62 gigabytes)
Average data transferred per day: 1.10 gigabytes (1.23 gigabytes)Figures in parentheses refer to the 7-day period ending May 01 2009 at 3:01 AM.
另外,有409197次请求,占全部访问流量的92.13%,来自于wp-content/ 文件夹;有19998次请求,占全部访问流量的39.78%,来自于timthumb.php 文件。
终于算是定位到根源了。timthumb.php 文件是Arthemia 主题自带的一个“缩略图”功能插件,细看了一下文件,原来它并不是调用WordPress 自动生成的缩略图,而是通过这个插件重新在客户端临时生成缩略图,然后显示。也就是每位访问者只要一打开页面,凡是有缩略图的地方都会请求一次timthumb.php 文件,然后通过它再打开图片;首页一般至少有5张缩略图,每位访客就会请求5次,并且图片不会缓存,刷新页面的话又重新发送请求……于是,图片的流量就暴增了。
找到了问题,就搞死它。具体的技术性流程就不细说了,2号搞了一凌晨,大概的简明步骤为:
- 在模板中取消掉timthumb.php 的所有调用,废除此插件
- 另外找一个缩略图插件,这里重新使用的Get The Image 这款,直接调图片,有缓存
- 配置WordPress 自身的缩略图功能,使其符合原来的缩略图尺寸,充分利用已有资源
- 利用新插件提供的函数,重新按原样式修改“缩略图”显示功能,这儿是个难点
- 为全部文章图片重新生成相应的缩略图,平滑过渡
至此,当你看到这儿的时候,Freeimer 已经使用上了新的缩略图系统,当然还有其它的优化调整。你可以使用这个工具来测试首页的打开速度,我已经尽量优化到6秒左右了,比之前少了2秒;虽然还是比较慢,但相对66k 的首页来说,已经很不错了。主要是底部的Yahoo!Stat. 比较耗时,平均需要3秒,但为了持续分析访客习惯,这是必须保留的,在底部也基本不会影响正常的访问。
接下来还要把所有的图片重新生成缩略图,新插件还有个别功能需要调试。如果近期发现某些图片无法显示,或显示的尺寸、比例异常,属正常情况,稍候就会恢复。
有一切问题请反馈,大家快才是真的快,谢谢!
暂无相关文章











不对吧,timthumb 可以加个缓存目录呀。
Image Max Width 是什么插件,google不到?
@rose:用来限定日志图片显示的最大尺寸。
可能因为是个人作品,传播不太广泛,但也不至于“Google 不到”啊,插件页面:http://cn.programmingnote.com/blog/?p=90
博主使用的书签插件叫什么名字呢?
timthumb.php 是可以设置缓存的。脚本默认只缓存两天的缩图,可以通过注释掉86行来解决。
有什么问题和困难?有什么答案和方法?
最新评论
本月热评文章
随机文章
最活跃用户
在线用户
每月存档
Live Widgets
最近文章
评论最多的文章
浏览量最高的文章
评论(RSS) | 留言 | 联系管理员 | Map | Logs |