用Typecho Redis Cache来为Typecho提供全站超高速缓存

前几天在免费资源部落上看到一篇文章用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

部署步骤

  1. Typecho Redis Cache使用 Credis 库作为Redis的php客户端,点此下载 。解压后将 Credis 目录上传到 Typecho 根目录;
  2. 将Typecho根目录的index.php文件重命名为index_origin.php
  3. 根据服务器配置Typecho Redis Cache index.php文件的redis_hostredis_portuserkey三个参数,然后将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的缓存是不会自己清除的,需要用户手工清理。清理时,只要在打开的任意一个网页上加上userkeyaction参数就可以了。userkeyindex.php文件配置,action可以是purgepagepurgeall

注意: 清除缓存的结果调试信息在页面的头部,其它调试信息在页面的尾部。调试信息为html注释,需要查看网页源代码才能看到。

非缓存页面

以下类型的页面不会建立缓存:

  • /admin/ 目录下的所有页面
  • 搜索结果页面
  • 404页面
  • sitemap.xml

缓存效果测试

页面生成时间测试

  • 没有加载缓存时,首页的生成时间为0.2秒(Typecho的轻巧果然名不虚传!):

http://uploads.shuyz.com/2014/06/822433884.png

  • 使用Redis缓存时,首页的生成时间为0.001秒,整整快了200倍啊!

http://uploads.shuyz.com/2014/06/2321680259.png

可以点击下面的链接自行测试,打开网页后查看源代码就可以看到页面生成时间等调试信息了。

并发性能测试

0.2秒和0.001秒的差别是看不出任何效果的。但是随着并发访问量加大,多个php页面的执行将造成服务器CPU、内存等资源的大量消耗,从而使页面执行时间加长,网页加载速度明显变慢;而使用了Redis缓存之后,服务器只是从缓存里取出数据,并不需要耗费太多资源,所以网页加载速度变化不大。

为了验证这个说法,我们使用loadimpact网站进行并发测试。

没有使用缓存时,页面的加载时间(蓝色线)随着访问量的上升明显增加,到50个并发的时候访问时间打开一个网页需要接近10秒;
http://uploads.shuyz.com/2014/06/745831596.png

使用Redis开启全站缓存后,页面的加载时间稳定在1~2秒,访问量的上升并没有导致网页加载变慢。Redis缓存对网站并发能力的提升效果非常显著。
http://uploads.shuyz.com/2014/06/3023991238.png

参考资料

关键字:typecho, redis, php, cache

本文链接:树叶的BLOG >> 用Typecho Redis Cache来为Typecho提供全站超高速缓存

本作品采用知识共享署名-非商业性使用-相同方式共享 3.0 Unported许可协议进行许可。

上一篇 : 在华为HG255D OpenWrt上安装和配置Shadowsocks并实现智能流量转发 下一篇 : 在OpenShift应用平台上编译和部署Redis