互联网服务
2014 年 6 月 4 日
用Typecho Redis Cache来为Typecho提供全站超高速缓存
这篇文章介绍了如何使用Redis缓存来加速Typecho博客。作者在参考了一篇WordPress缓存的文章之后,编写了适用于Typecho的Redis缓存插件,并将其代码上传至Github。在部署之前,需要确保服务器满足一定的条件,如安装了PHP、Redis以及Apache或Nginx服务器等。接着,文章给出了具体的部署步骤,包括下载Credis库、重命名Typecho根目录中的index.php文件、根据服务器配置Typecho Redis Cache的参数等。最终,Typecho根目录中应该只有一个名为index.php的文件。
前几天在免费资源部落上看到一篇文章用Redis缓存来给WordPress站点加速-适用于Apache和Nginx。正好我用的Typecho博客没有相应的缓存插件,于是决定写一个Typecho的Redis缓存。
经过一下午的折腾之后,Typecho的Redis缓存前端终于完成了,代码托管在github,压缩包下载:Typecho Redis Cache。
部署Typecho Redis Cache
部署条件
在将部署Typecho Redis Cache之前,请确定服务器满足以下几个条件:
- PHP >= 5.3
- Redis
- Apache或Nginx服务器
- Typecho
部署步骤
- Typecho Redis Cache使用
Credis
库作为Redis的php客户端,点此下载 。解压后将Credis
目录上传到 Typecho 根目录; - 将Typecho根目录的
index.php
文件重命名为index_origin.php
; - 根据服务器配置Typecho Redis Cache
index.php
文件的redis_host
,redis_port
和userkey
三个参数,然后将index.php
上传到Typecho根目录。
/** redis connection parameters */
$redis_host = '127.2.172.129';
$redis_port = '15001';
/** the key used to purge cache */
$userkey = 'abc123';
最后的Typecho根目录看起来应该是这样子的:
├── index.php Typecho Redis Cache 前端脚本
├── index_origin.php Typecho 原来的index.php
├── Credis Credis 库(**注意是大写**)
├── Client.php Credis 库文件
├── other files
├── Typecho其它文件夹和文件
这时候访问网页应该可以看到效果了,为了方便调试,网址后面最后加上?debug=true参数,这样就可以在网页源代码看到调试信息。
缓存管理
Redis的缓存是不会自己清除的,需要用户手工清理。清理时,只要在打开的任意一个网页上加上
userkey
和action
参数就可以了。userkey
在index.php
文件配置,action
可以是purgepage
或purgeall
。-
清除当前页面缓存(请将example.com换成你的域名,page.html换成实际的网址): http://www.example.com/page.html?debug=true&userkey=abc123&action=purgepage
-
清除整站缓存: http://www.example.com/page.html?debug=true&userkey=abc123&action=purgeall
注意: 清除缓存的结果调试信息在页面的头部,其它调试信息在页面的尾部。调试信息为html注释,需要查看网页源代码才能看到。
非缓存页面
以下类型的页面不会建立缓存:
- /admin/ 目录下的所有页面
- 搜索结果页面
- 404页面
- sitemap.xml
缓存效果测试
页面生成时间测试
- 没有加载缓存时,首页的生成时间为0.2秒(Typecho的轻巧果然名不虚传!):
- 使用Redis缓存时,首页的生成时间为0.001秒,整整快了200倍啊!
可以点击下面的链接自行测试,打开网页后查看源代码就可以看到页面生成时间等调试信息了。
- 未加载缓存:http://www.shuyz.com/?debug=true&userkey=abc123&action=purgepage
- 加载Redis缓存:http://www.shuyz.com/?debug=true
并发性能测试
0.2秒和0.001秒的差别是看不出任何效果的。但是随着并发访问量加大,多个php页面的执行将造成服务器CPU、内存等资源的大量消耗,从而使页面执行时间加长,网页加载速度明显变慢;而使用了Redis缓存之后,服务器只是从缓存里取出数据,并不需要耗费太多资源,所以网页加载速度变化不大。
为了验证这个说法,我们使用loadimpact网站进行并发测试。
没有使用缓存时,页面的加载时间(蓝色线)随着访问量的上升明显增加,到50个并发的时候访问时间打开一个网页需要接近10秒;
使用Redis开启全站缓存后,页面的加载时间稳定在1~2秒,访问量的上升并没有导致网页加载变慢。Redis缓存对网站并发能力的提升效果非常显著。
参考资料
本文为原创文章,未经允许请勿非法盗用资源。我们保护知识产权,尊重每一个创作者的劳动成果。如需转载,请务必注明出处并获得授权,谢谢合作!
作者:Lance | 发表日期:2014 年 6 月 4 日