说到wordpress的缓存,大家想到的肯定是 wp-super-cache 的静态html缓存,以及 memcached 或 redis 动态缓存,插件的缓存效果肯定是有的,但是容易出现各种问题,比如配置很复杂、配置全英文、插件之间的冲突等,所以今天我要教大家一个更高级的缓存:nginx fastcgi_cache缓存,直接在nginx层面缓存页面,还支持缓存伪静态!效果比起传统的php缓存好得太多了,因为很多人使用宝塔面板,所以今天的教程是基于宝塔面板的教程。
现在宝塔面板都默认编译了 nginx ngx_cache_purge 模块,所以我们直接跳过安装方法。
nginx配置
全局设置
现在我们开始配置nginx,来到宝塔后台,在商店找到nginx,点击设置按钮,在配置修改中添加以下内容:
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=wordpress:250m inactive=1d max_size=1g;
fastcgi_temp_path /tmp/wpcache/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
#忽略一切 nocache 申明,避免不缓存伪静态等
fastcgi_ignore_headers cache-control expires set-cookie;
加好之后截图如下:
网站设置
在宝塔后台的网站列表中,找到你的网站,并且点击设置按钮,将以下代码添加到配置文件中去:
set $skip_cache 0;
#post 访问不缓存
if ($request_method = post) {
set $skip_cache 1;
}
#动态查询不缓存
if ($query_string != "") {
set $skip_cache 1;
}
#后台等特定页面不缓存(其他需求请自行添加即可)
if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") {
set $skip_cache 1;
}
#对登录用户、评论过的用户不展示缓存
if ($http_cookie ~* "comment_author|wordpress_[a-f0-9] |wp-postpass|wordpress_no_cache|wordpress_logged_in") {
set $skip_cache 1;
}
#这里请参考你网站之前的配置,特别是sock的路径,弄错了就502了!如果你的网站使用php7.4,就写-74.sock
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
add_header strict-transport-security "max-age=63072000; includesubdomains; preload";
#新增的缓存规则
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header x-cache "$upstream_cache_status from $host";
fastcgi_cache wordpress;
add_header cache-control max-age=0;
add_header nginx-cache "$upstream_cache_status";
add_header last-modified $date_gmt;
add_header x-frame-options sameorigin; # 只允许本站用 frame 来嵌套
add_header x-content-type-options nosniff; # 禁止嗅探文件类型
add_header x-xss-protection "1; mode=block"; # xss 保护
etag on;
fastcgi_cache_valid 200 301 302 1d;
}
#缓存清理配置
location ~ /purge(/.*) {
allow 127.0.0.1;
allow "外网ip"; # 引号要保留
deny all;
fastcgi_cache_purge wordpress "$scheme$request_method$host$1";
}
加好之后的截图如下:
添加好之后,重载nginx设置,缓存就加好了,
wordpress清理缓存插件
后台搜索 nginx helper 插件安装启用,这个插件是为 wordpress fastcgi_cache缓存 打造的一个插件,十分的好用。
判断缓存状态
按 f12 开启开发者工具,在未登录的情况下访问网站kb88凯时d88尊龙官网手机app官网登录首页,查看文件头,如果出现 hit 则是缓存了,bypass 则是因设置原因未缓存,miss 即这个页面还没被缓存,新发布或刚被删除的页面,首次访问将出现这个状态,如图所示: