由于现在所使用的虚拟主机性能十分低、Web服务器和数据库都放在一台机器上,又暂时不想扩展主机的性能(主因穷),所以想启用WP Super Cache来对博客页面进行静态化缓存。WP Super Cache是可以直接在WordPress后台安装的,并且如果使用Apache服务器的话,是可以自动配置基于mod_rewrite的缓存规则的。但是我使用Nginx,在WordPress的官方文档有介绍如何配置,这里适当记录一下整个过程。
配置WP Super Cache
安装好WP Super Cache之后,要到该插件的设置、高级页面启用以下选项:
- 启用缓存功能 (推荐)
- mod_rewrite 缓存模式
- 压缩页面以便让来访者更快浏览 (推荐)
- 不要为已知用户缓存 (推荐)
- 缓存重建。当新缓存生成时调用缓存文件给匿名用户 (推荐)
- 不要为 GET 请求缓存(地址结尾为?x=y)
- 当有新文章或页面的发布或更新时清除之前的缓存文件
- 当某页面有新评论时,只刷新该页面的缓存
然后点击更新按钮保存设定。由于正在使用Nginx,所以该插件会提示Mod rewrite 模块可能未安装
和重写规则必须被更新
。不用担心,接下来就配置WP Super Cache所需的Nginx URL重写规则。
* 即便还没配置WP Super Cache的Nginx URL重写规则,WordPress还是可以正常访问的,所以不用担心一步步来。
配置Nginx URL重写规则
先保存以下配置文件片段:
#!/bin/bash
sudo vim /etc/nginx/snippets/wp-super-cache.conf
# WP Super Cache 规则
set $cache_uri $request_uri;
# POST请求不缓存
if ($request_method = POST) {
set $cache_uri 'null cache';
}
# 带查询参数的页面不缓存
if ($query_string != "") {
set $cache_uri 'null cache';
}
# 不缓存匹配下列路径段的请求
if ($request_uri ~* "(/wp-admin/|/xmlrpc.php|/wp-(app|cron|login|register|mail).php|wp-.*.php|/feed/|index.php|wp-comments-popup.php|wp-links-opml.php|wp-locations.php|sitemap(_index)?.xml|[a-z0-9_-]+-sitemap([0-9]+)?.xml)") {
set $cache_uri 'null cache';
}
# 对已登录的用户和已留言的用户不缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9]+|wp-postpass|wordpress_logged_in") {
set $cache_uri 'null cache';
}
# 如果缓存或者具体文件存在,就直接返回静态文件,否则交由WordPress处理
# 这段配置是用来顶替常规的永久链接配置
location / {
try_files /wp-content/cache/supercache/$http_host/$cache_uri/index-https.html $uri $uri/ /index.php?$args ;
}
# 如果你不使用HTTPS,就这样配置
# location / {
# try_files /wp-content/cache/supercache/$http_host/$cache_uri/index.html $uri $uri/ /index.php?$args ;
# }
然后到WordPress的Nginx配置文件的server
段内引入这段配置:
#!/bin/bash
sudo vim /etc/nginx/sites-available/wordpress
# ... 前略 ...
server {
# ... 略 ...
# 注销原本的永久链接配置
# location / {
# try_files $uri $uri/ /index.php?$args;
# }
include snippets/wp-super-cache.conf;
# ... 略 ...
}
# ... 后略 ...
保存后,执行sudo service nginx configtest
测试配置是否正确,然后执行sudo service nginx reload
或sudo service nginx restart
。
如何确认已激活WP Super Cache页面静态缓存
登出你的WordPress,或者开启一个没登录过WordPress的浏览器,访问你的博客的某个页面,然后Ctrl U
查看页面的源代码,滚动到代码的最下端,如果你看到:
这便代表WP Super Cache静态页面缓存已经正常工作。作为管理员或者已登录的用户访问页面时,页面源代码将会看到缓存没生效的注释: