FastCGI_Cache是Nginx的缓存模块,能够从Nginx层面实现网页静态化,能有效提高网站的并发能力、减少PHP运行时间和请求响应时间。
当然,前提是服务器本身有足够的性能,如果只有1H1G,再怎么优化也无法显著提升。
需要注意的是,由于FastCGI_Cache缓存了PHP请求,导致部分需要运行PHP的功能会失效,例如阅读量统计,所以请自行斟酌得失。
下面是启用FastCGI_Cache的教程:
创建缓存目录
比如服务器环境:TencentOS3+宝塔面板+Nginx-tengine
手动创建以下两个目录,并设置权限为755。
/tmp/wpcache
/tmp/wpcache/temp
通过终端创建
mkdir /tmp/wpcache
mkdir /tmp/wpcache/temp
chmod 755 /tmp/wpcache
chmod 755 /tmp/wpcache/temp
也可以直接用宝塔面板创建。
修改网站配置
将以下代码插入网站配置的 server 块前面(注意不是 Nginx 配置)。
fastcgi_cache_path /tmp/wpcache levels=1:2 keys_zone=WORDPRESS:128m 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;
注意:
1、插入站点配置的方法适合单站点,如果需要开启多站点缓存请尝试直接修改 Nginx 配置。
2、在keys_zone=WORDPRESS:128m中,WORDPRESS是缓存名,需要和下面的配置对应,128m是缓存大小限制,可以适当调整。
3、/tmp/wpcache是缓存路径,需要提前创建,不然宝塔面板可能会报错。
将以下代码插入网站配置 #SSL-END 注释后面
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/|/wp-admin/*|/xmlrpc.php|wp-.*.php|/feed|/rss|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了!关于sock,宝塔面板的在/www/server/php/php版本/etc/php-fpm.conf中有配置路径宝塔面板的sock
location ~ [^/]\.php(/|$)
{
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
#新增的缓存规则
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;
}
注意:
1、务必修改 sock 版本,默认PHP7.4,只需将其替换为当前使用的版本。例如用的是PHP7.3就修改成 /tmp/php-cgi-73.sock
2、这里没有配置 purge 地址,因为很容易出现冲突,下面将采取插件直接清除缓存目录的方法。(不懂的话可以忽略这句)
3、建议阅读一下配置中的注释
检查缓存状态:
1、进入网站并注销登陆
2、右键网页选择检查工具,并在打开的开发者工具中选择网络,勾选禁用缓存后刷新两次
3、选择页面文件查看信息头,如果显示HIT即为缓存成功。
响应头释义:
安装WP缓存清除插件:
登陆 WP 后台搜索并安装 Nginx Helper 插件
按图修改配置
修改缓存清除路径
1、打开 /网站目录/wp-content/plugins/nginx-helper/includes/class-nginx-helper.php
找到RT_WP_NGINX_HELPER_CACHE_PATH
(大概在第87行)
2、将默认缓存路径/var/run/nginx-cache
修改为/tmp/wpcache
然后就完成了
现在,没有登陆的用户访问到的是静态缓存,访客评论后会自动清缓存,管理员的请求不会被缓存。
当需要手动清除缓存的时候点击 Nginx Helper 插件里的Purge Entire Cache按键即可。
没有配置 Fastcgi_Cache 的 Nginx 是不完整的。
2、本站所有文章,如无特殊说明或标注,均为本站原创发布。任何在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们邮箱:526009505@qq.com进行处理。
3、咨询请联系QQ:526009505