Hi!请登陆

在Nginx上启用WordPress超级缓存

2020-12-9 63 12/9

由于现在所使用的虚拟主机性能十分低、Web服务器和数据库都放在一台机器上,又暂时不想扩展主机的性能(主因穷),所以想启用WP Super Cache来对博客页面进行静态化缓存。WP Super Cache是可以直接在WordPress后台安装的,并且如果使用Apache服务器的话,是可以自动配置基于mod_rewrite的缓存规则的。但是我使用Nginx,在WordPress的官方文档有介绍如何配置,这里适当记录一下整个过程。

在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 reloadsudo service nginx restart


如何确认已激活WP Super Cache页面静态缓存

登出你的WordPress,或者开启一个没登录过WordPress的浏览器,访问你的博客的某个页面,然后Ctrl + U查看页面的源代码,滚动到代码的最下端,如果你看到:

<!-- Dynamic page generated in 0.096 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2017-07-07 15:41:44 -->

<!-- Compression = gzip -->

这便代表WP Super Cache静态页面缓存已经正常工作。作为管理员或者已登录的用户访问页面时,页面源代码将会看到缓存没生效的注释:

<!-- Dynamic page generated in 0.333 seconds. -->
<!-- Page not cached by WP Super Cache. Check your settings page. Not caching requests by known users. (See Advanced Settings page) -->

相关推荐