正确使用batcache缓存静态页面
- nginx的fastcgi缓存
- 基于memcached的batcache插件
前者将html页面静态化生成文件保存在服务器硬盘,响应客户端需求发送出去。后者将html页面静态化到内存,根据需要发送到浏览器。
这两种方案的效果对于访问者来讲基本上都差不多,可能fastcgi缓存的方式能应对更大并发数的请求,但是对于小流量的博客而言这个优点可能并不重要。
利用nginx的fastcgi缓存方案的缺点:
- 在服务器端部署nginx时需要把ngx_purge插件编译进去,如果是使用lnmp一键包的用户还要手动重新编译替换nginx
- nginx配置文件需要额外加入针对fastcgi的内容
- wordpress主题functions.php需要加入清除缓存的代码,或者安装nginx helper插件
由于这些额外的安装配置和设定,迁移博客时可能会比较麻烦。
对于懒人来讲,在静态化性能差不多的情况下,还是用batcache去做缓存比较方便。前文memcached安装已经提到了如何安装部署memcached服务端,安装object-cache和batcache的drop-in插件,这里不再赘述。这里只额外提一些需要注意的问题。
object-cache 安装和测试
- memcached服务端监听127.0.0.1的11211端口,注意看iptables防火墙规则是否阻止了这个端口。
- object-cache最新代码可以从github项目上下载: 下载地址object-cache,在项目主页上还提到了如何测试object-cache是否能正常运行,将下面的代码保存为test.php放到wp-content/mu-plugins目录下,如果不存在的话就创建该目录
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $key = 'dummy'; $value = '100'; $dummy_value = wp_cache_get( $key ); if ( $value !== $dummy_value ) { echo "The dummy value is not in cache. Adding the value now."; wp_cache_set( $key, $value ); } else { echo "Value is " . $dummy_value . ". The WordPress Memcached Backend is working!"; } |
batcache安装和注意事项
- batcache的最新代码可以从github项目上下载:下载地址batcache。将advanced-cache.php放入wp-content/目录下即可,默认缓存时间300秒。如果需要缓存更长时间或者改动其他配置,修改下面这几行
1 2 3 4 5 |
<?php var $max_age = 300; // Expire batcache items aged this many seconds (zero to disable batcache) var $remote = 0; // Zero disables sending buffers to remote datacenters (req/sec is never sent) var $times = 2; // Only batcache a page after it is accessed this many times... (two or more) var $seconds = 120; // ...in this many seconds (zero to ignore this and use batcache immediately) |
- 不要忘了在wp-config.php内定义WP_CACHE
- 项目内还提供了batcache-stats-example.php,重命名为batcache-stats.php并和advanced-cache.php放到一起,能打开日志功能,默认写入/var/spool/wpcom/extra目录下。
- batcache生成的缓存会在下面情况下自动刷新
- 发评论
- 更新文章
- 发布新文章
- 如果浏览器发送http请求包含cookie的话,batcache不会调用缓存的内容,因此登录用户或者刚发过评论的用户,看到的都是最新的页面内容。
- 快速清除全部缓存
目前作者表示没有开发清除所有缓存的功能见此issue:No clear all method,如果非要清除所有缓存,可以重启memcached服务端。
service memcached restart
本文出自扉启博客,转载时请注明出处及相应链接。
本文永久链接: https://www.feiqy.com/batcache-best-practice/
近期评论