开启后可以让Typecho使用Nginx进行缓存,有效提升高并发下的网站性能
推荐使用宝塔面板(因已内置 Ngx_cache_purge 模块)
插件特性直接在nginx层缓存,媲美静态页面速度
php请安装7.4 版本
支持所有页面缓存
支持内容修改之后自动更新内容、分类、首页缓存
支持评论生效更新缓存
支持登录状态下不缓存
支持搜索等动态页面不缓存
更新日志
v1.0 初始版本
v1.1 修复评论分页刷新 增加Tag页面刷新 增加自定义刷新后缀
已知问题
非js方式的访问统计插件会失效
使用方法
步骤一:需要修改/www/server/nginx/conf/nginx.conf配置文件
将下列代码,添加到 Nginx.conf 文件的 server 字段上方即可
fastcgi_cache_path /www/server/nginx/fastcgi_cache_dir levels=1:2 keys_zone=fcache:250m inactive=1d max_size=1G;
fastcgi_temp_path /www/server/nginx/fastcgi_cache_dir/temp;
fastcgi_cache_key "$scheme$request_method$host$request_uri";
fastcgi_cache_use_stale error timeout invalid_header http_500;
fastcgi_ignore_headers Cache-Control Expires Set-Cookie;
小提示,缓存目录可自定义如下,也可按照下方路径创建目录并给予 777 权限:
- 路径 /www/server/nginx/fastcgi_cache_dir 需自行创建 并给予 777 权限
- 路径 /www/server/nginx/fastcgi_cache_dir/temp 需自行创建 并给予 777 权限
步骤二:进入宝塔面板找到需要设置的网站,点开配置文件,如下图
将下列代码复制到 上图 所标示的位置
#缓存扩展开始
set $skip_cache 0;
#post访问不缓存
if ($request_method = POST) {
set $skip_cache 1;
}
#动态查询不缓存
if ($query_string != "") {
set $skip_cache 1;
}
#pjax查询缓存
if ($query_string ~ "_pjax=(.*)") {
set $skip_cache 0;
}
#后台等特定页面不缓存(其他需求请自行添加即可)
if ($request_uri ~* "/admin/|/action/|/search/|/feed/|baidu_sitemap.xml|sitemap.xml") {
set $skip_cache 1;
}
#对登录的用户不展示缓存
if ($http_cookie ~* "typecho_authCode") {
set $skip_cache 1;
}
location ~ [^/]\.php(/|$) {
try_files $uri =404;
fastcgi_pass unix:/tmp/php-cgi-74.sock;
fastcgi_index index.php;
include fastcgi.conf;
include pathinfo.conf;
#新增的缓存规则
fastcgi_cache_bypass $skip_cache;
fastcgi_no_cache $skip_cache;
add_header X-自己取名-Cache "$upstream_cache_status From $host";
fastcgi_cache fcache;
fastcgi_cache_valid 200 1d;
}
location ~* /这里的token要求和后台一致/_clean_cache(/.*) {
fastcgi_cache_purge fcache "$scheme$request_method$host$1$is_args$args";
}
Token演示:例如后台设置1150AE6A4F7938AE754D则这里设置为
location ~* /1150AE6A4F7938AE754D/_clean_cache(/.*) {
fastcgi_cache_purge fcache "$scheme$request_method$host$1$is_args$args";
}
设置完成后,再宝塔面板中找到Nginx进程,重载进程,然后重启Nginx,在 Typecho 后台 启动插件即可
注意:插件里的token务必为 上面设置的,另外 目录,请和伪静态目录一致
缓存效果
替换新的配置,并且重载Nginx之后,访问前台页面,查看header,会多出一个 X-自己取名-Cache 标志。
X-自己取名-Cache 一般会有3个状态:MISS、HIT、BYPASS。
MISS表示未命中
即这个页面还没被缓存,新发布或刚被删除的页面,首次访问将出现这个状态(图略)。
HIT表示缓存命中
打开一个会缓存的页面,比如文章内容html页面,F5刷新几次即可在F12开发者模式当中的Header头部信息中看到如图缓存命中状态:
如出现下图所有 HIT 则缓存成功
下载地址:https://github.com/typecho-fans/plugins/tree/master/Ncache
4 条评论
感谢教程,这样子并发可以抢上很多。
素材:https://cloud.189.cn/t/amiYVrEjyYni
pjax 和 ajax 会失效吗?
不会