WordPress静态化Nginx缓存插件nicen-cache

今天老白跟大家分享一个在2024年11月25日新鲜出炉的,比较适用于个人博客的WordPress优化静态化缓存插件:nicen-cache-master。该插件基于nginx实现,让WordPress的所有请求只需要通过Nginx处理,不经过PHP和Mysql,站点访问速度极快。

WordPress静态化Nginx缓存插件nicen-cache

1.nicen-cache原理介绍

此处简单贴一下作者当时的开发插件的初心,帮助大家了解插件以及wordpress优化的简单过程

1.1 wordpress请求响应过程

wordpress响应请求大致分为如下几个过程:

Nginx接收请求 -> php-fpm进程运行指定php脚本 -> php在mysql内查询相应数据 -> 处理返回给Nginx -> Nginx响应用户请求

因为不存在缓存的过程,所以每次处理请求都要重新查询数据库,所以wp有很多流行的静态缓存方案;

1.2 wordpress缓存方式

这里可以参照:一文解读WordPress网站的各类缓存

文件缓存

初次请求 -> Nginx接收请求 -> php-fpm进程运行指定php脚本 -> php在mysql内查询相应数据 -> 缓存本次请求产生的页面数据到文件A -> 处理返回给Nginx -> Nginx响应用户请求

缓存之后的请求过程如下:

缓存之后的所有请求 -> Nginx接收请求 -> php-fpm进程运行指定php脚本 -> 判断是否存在缓存文件 -> 输出缓存文件的内容给Nginx -> Nginx响应本次请求

点评
相较于没有缓存的情况,大大的减少了Mysql的查询次数,所有文件缓存是比较流行的一种方式,但是这种方式在数据量很大的时候,能起到的作用还是比较有限的。

内存持久化缓存

初次请求 -> Nginx接收请求 -> php-fpm进程运行指定php脚本 -> php在mysql内查询相应数据 -> 缓存本次请求产生的页面数据到Redis -> 处理返回给Nginx -> Nginx响应用户请求

内存持久化缓存最常见的是将页面缓存到Redis,缓存之后的每次请求直接从Redis获取数据;

因为每次查询都是操作内存,所以速度非常快,响应过程大致如下:

缓存之后的所有请求 -> Nginx接收请求 -> php-fpm进程运行指定php脚本 -> 判断Redis是否存在缓存 -> 输出缓存文件的内容给Nginx -> Nginx响应本次请求

点评
缺点就是数据量大的时候,占用的内存比较多,所以这种方式相较于文件缓存,使用的比较少。

Nginx+文件缓存

Nginx响应静态文件请求出了名的快,所以我们可以将响应请求的方式调整成如下过程:

缓存之后的所有请求 -> Nginx接收请求  -> Nginx判断当前请求是否有缓存文件 ->  直接响应本次请求的缓存文件

点评
页面生成缓存之后,响应请求不再经过PHP和Mysql等以外的程序,直接通过Nginx完成所有事情。

2. 插件安装使用

2.1 插件下载

基于上述,作者Nicen大神开发了这款插件,大家可以在下面的地址中下载

然后选择“开启缓存”即可

Github:https://github.com/friend-nicen/nicen-cache

Gitee:https://gitee.com/friend-nicen/nicen-cache

2.2 插件安装

在后台安装后,为了实现由nginx访问,需要改写WordPress伪静态规则为:

WordPress静态化Nginx缓存插件nicen-cache

location / {
    # 对于POST请求不走缓存
    if ($request_method ~ ^(POST)$){
	  rewrite / /index.php?$args last;
    }	
    try_files /cache/$uri /cache${uri}_${args}/index.html  $uri $uri/  /index.php?$args;
}

rewrite /wp-admin$ $scheme://$host$uri/ permanent;
注意
①.启用插件后,插件会将缓存文件保存在站点的根目录下的cache目录,如果插件自动创建目录失败,请手动创建,并给可写权限!

②.插件与其他有缓存功能的插件不兼容,同时启用多个缓存插件将导出缓存异常!

3.插件功能说明

3.1 缓存生成/刷新

由于插件是今天刚发布,所以一些说明文档还有待完善,老白从自己的使用简单来说说:

缓存的生成

缓存生成需要访客(隐身模式打开网站)去访问网页后才能生成

生成后的文件可在网站根目录cache查看

WordPress静态化Nginx缓存插件nicen-cache

这一点建议作者增加预缓存全站功能,或可借助宝塔shell脚本实现缓存的生成与删除

宝塔面板shell脚本访问WordPress站点地图实现全站预缓存

缓存的刷新

  • 文章发布、更新时,自动更新相关联的所有缓存
  • 文章有新的评论时,自动更新相关联的所有缓存
  • 如果是已登录的用户访问页面,不缓存。
  • ...

3.2 功能开关

目前插件后台设置界面选项较少

  • 开启/关闭缓存
  • 指定UA访问时不缓存页面
  • 指定UA访问是不缓存页面
  • ...

4.插件效果展示

页面被缓存之后,所有访客访问的都是这个缓存页面,所以插件只适用于静态内容为主的站点,比如个人博客

下面是启用了该插件的网站:

作者官网:https://nicen.cn/

老白测试站:https://test.xcbtmw.com/