Nginx服务器使用WP Super Cache静态缓存插件教程

 懿古今   2019-01-11 10:19:44 更新  WordPress

WP Super Cache 静态缓存插件应该可以说是最受欢迎的缓存插件,不过 WP Super Cache 缓存插件主要是针对 Apache 服务器而言,对于 Apache 服务器的站点安装启用插件后直接在后台进行设置就可以使用,但是对于 Nginx 服务器的站点选择 mod_rewrite 缓存模式就没有起作用,因为 Nginx 并没有 Apache 的 mod_rewrite 模块,想要使用还必须往配置文件加入一些规则以实现和 Apache 的 mod_rewrite 模块相同的功能才行。所以今天就将懿古今和 boke112 导航开启 WP Super Cache 静态缓存插件的全过程分享给大家。

Nginx 服务器使用 WP Super Cache 静态缓存插件教程

PS:为什么要纠结于 mod_rewrite 缓存模式呢?这里引用知更鸟大神的话来回答大家:“如果选择非推荐的 mod_rewrite 缓存模式,缓存效果一般,个人感觉也就没必要使用这款缓存插件了。”

Nginx服务器使用WP Super Cache静态缓存插件详细步骤:

1、只要将以下代码中的 2~57 行添加到网站对应的 nginx location 中,保存好配置文件后记得重启 Nginx 服务器。

  1. location / {
  2.            # 如果请求的文件已存在,直接返回
  3.            if (-f $request_filename) {
  4.                break;
  5.            }
  6.            set $supercache_file '';
  7.            set $supercache_uri $request_uri;
  8.            set $supercache 1;
  9.            set $ihttp_host '';
  10.            if ($request_method = POST) {
  11.                set $supercache 0;
  12.            }
  13.            # 仅在访问文章永久链接时使用静态文件,请求中带参数则不使用静态缓存
  14.            set $qs 0;
  15.            if ($query_string) {
  16.                set $qs 1;
  17.            }
  18.            # 不过从 twitter, facebook, feedburner 链接点过来的,总是带参数,这些访问仍然可以使用静态文件
  19.            if ($query_string ~* "^utm_source=([^&]+)&utm_medium([^&]+)&utm_campaign=([^&]+)(&utm_content=([^&]+))?$") {
  20.                set $qs 0;
  21.                set $supercache_uri $document_uri;
  22.            }
  23.            #deactivate on high load
  24.            if ($qs = 1) {
  25.                set $supercache 0;
  26.            }
  27.            # 针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉
  28.            if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
  29.                set $supercache 0;
  30.            }
  31.            # 支持移动设备,访问移动版本的网页缓存
  32.            if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)') {
  33.                 set $ihttp_host '-mobile';
  34.            }
  35.            # 指定静态缓存文件的路径
  36.            if ($supercache = 0) {
  37.                 set $supercache_uri '';
  38.            }
  39.            if ($supercache_uri ~ ^(.+)$) {
  40.                set $supercache_file /wp-content/cache/supercache/$http_host$1/index${ihttp_host}.html;
  41.            }
  42.            # 只有当缓存文件存在时,才进行 rewrite
  43.            if (-f $document_root$supercache_file) {
  44.                #rewrite ^(.*)$ $supercache_file break;
  45.                rewrite ^ $supercache_file last;
  46.            }
  47.            # 所有其他请求,转给 wordpress 处理
  48.            if (!-e $request_filename) {
  49.                rewrite . /index.php last;
  50.            }

代码来自:公子府

其中代码中已经有很详细的注释了,这里就不再多做解释,我直接复制粘贴使用,没有修改。

2、WordPress 后台安装并启用 WP Super Cache,具体安装过程就不再啰嗦了,请自行安装。

3、进入到 WP Super Cache 插件的“高级”选项,进行以下操作,并点击【更新】和【更新 Mod_Rewrite 规则】:

  • 勾选“启用缓存以便加快访问。(推荐)”
  • 选择“mod_rewrite 缓存模式。”
  • 勾选“缓存重建。当新缓存生成时调用缓存文件给匿名用户。(推荐)”
  • 勾选 “首页额外检查。(极少数情况下会停止对首页的缓存)(推荐)”
  • 勾选“当某页面有新评论时,只刷新该页面的缓存。”

Nginx 服务器使用 WP Super Cache 静态缓存插件教程 第 2 张

4、到期时间和垃圾回收期的设置,其中缓存超时时间设为 0 秒,计划选择时间,并设置为 00:00 小时:分钟,然后点击【修改过期设置】。

Nginx 服务器使用 WP Super Cache 静态缓存插件教程 第 3 张

PS:步骤 3 和 4 的设置是知更鸟大神分享其站点的设置内容(具体可见:知更鸟站点配置图),所以这次懿古今配置也根据这样的内容来设置。

5、WP Super Cache 插件的其他设置都不用理会,直接默认即可。接着我们设置 WP-PostViews 插件的“Use AJAX To Update Views:”为“Yes”即可。

至此,已经全部完成 Nginx 服务器使用 WP Super Cache 静态缓存插件的所有配置,理论上 WP Super Cache 插件已经能够正常使用了,虽然 WP Super Cache 插件选项设置中还会显示如下错误:

Mod rewrite 模块可能未安装!

貌似 mod_rewrite 模块尚未安装。也许情况并不是这样,尤其是当您不使用 Apache 作为服务器程序的时候。请检查 mod_rewrite 模块是否被加载。这对于 Super Cache 的静态文件的调用是必需的。不过您可以使用 PHP 缓存模式或者传统模式运行本插件。

其实,要知道 WP Super Cache 插件是否已经正常使用,我们只需要用匿名用户访问我们的站点首页源代码(360 浏览器的无痕模式打开我们站点的首页),如果看到有如下图所示的就表示已经正常使用了。

Nginx 服务器使用 WP Super Cache 静态缓存插件教程 第 4 张

WP Super Cache插件是否会影响计数?

其实文中第五步已经设置了 WP-PostViews 插件在开启缓存的情况下是可以正常计数的,只不过是在后台统计,而未能实时显示浏览数而已。对于这种问题我们可以看看知更鸟大神对这个问题的答复:

Nginx 服务器使用 WP Super Cache 静态缓存插件教程 第 5 张

对于这个未能实时显示浏览数的问题,我就懒得去折腾了,毕竟我也不可能每时每刻去盯着这个浏览数的变化。对于想实时显示浏览数,除了求助度娘自己折腾外,最好的办法应该就是不用缓存插件改用 CDN 加速。

WP Super Cache插件导致部分主题弹窗失效的解决办法

造成这个问题的产生大部分都是因为很多主题作者为了解决多次调用 jquery,或者 jquery 加速问题会自己另外加载 jquery,在正常情况下是没有问题的,不过启用 WP Super Cache 缓存后,WP-PostViews 插件会自动加载 WordPress 自带的 jquery,从而导致 JS 冲突。解决的办法就是在后台 > 插件 > 已安装的插件 > 直接编辑 wp-postviews 插件,在 wp-postviews.php 文件中找到以下代码:

  1. wp_enqueue_script( 'wp-postviews-cache', plugins_url( 'postviews-cache.js', __FILE__ ), array( 'jquery' ), '1.68', true );

直接修改为

  1. wp_enqueue_script( 'wp-postviews-cache', plugins_url( 'postviews-cache.js', __FILE__ ), false,  '1.68', true );

即可解决 WP Super Cache 插件导致部分主体弹窗失效的问题。

PS:为了防止 WP-PostViews 插件升级覆盖我们修改的文件,我们只需要在编辑 wp-postviews.php 文件时,把版本号改大即可忽略升级提示及升级,如 Version: 1.73 改为 Version: 9.73,保存后这个插件除非版本号超过 9.73,要不然都不会提示升级。

您可能感兴趣的文章

文章标签: ,   ,   ,  更多热门标签>>
版权声明:本文为原创文章,版权归 boke112联盟 所有,欢迎分享本文,转载请保留出处!发布此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请与老古(QQ:2226524923)联系,老古将及时更正、删除,谢谢。
  1. SKY8G
    SKY8G

    其实这个views插件,可以直接更改他的js代码就好了,ajax加载最好

    • 懿古今
      懿古今2019-08-15 16:13

      @SKY8G如果你开启了缓存插件,这个统计阅读数的插件后台设置就能选择是否ajax统计,无需折腾

  2. 八爪印
    八爪印

    博主,如果我用的是lnmpa环境,是不是可以直接安装WP Super Cache插件插件呢?

  3. 3366小游戏
    3366小游戏

    我就是用wp做的主题 感觉supercache 弄我的游戏网站缓存还不如php 和数据库的缓存效果差不多

  4. 野人摊影视分享
    野人摊影视分享

    不是最近好多站长都在推荐WP-Rocket,试用后,最大的感谢就是后台操作任何东西反应都非常慢,一直在等待响应,不知道是不是自己配置有问题,于是只能把wp super cache重装上,老规则,还是找懿古今的文章,这时,手贱的我看到了一个none.conf以为是前面刚创建的,就删除了,导致网站打不开了,555,这里提醒下爱折腾的朋友,操作之前一定要记得备份 !要不然就gg了!博主,我记得你好像也是用ecs的把,也是lnmp的环境吧, 如果你配置文件中个 /usr/local/nginx/conf/none.conf 这个文件,麻烦发给我下!谢谢!

    • 野人摊影视分享
      野人摊影视分享2017-02-25 20:31

      @野人摊影视分享已在lnmp官网的安装包找到了!,文章中的步骤5 这个WP-PostViews插件中没有Use AJAX To Update Views 此选项,不知道是不是跟WP-PostViews的版本有关系!

    • 懿古今
      懿古今2017-02-25 22:23

      @野人摊影视分享最稳妥的做法,不要轻易删除服务器里面的文件,特别是在不知道是什么文件的情况下,那样会相对安全一点。

  5. 金榜台博客
    金榜台博客

    还是服务器好啊

  6. 小萝博客
    小萝博客

    先了解了解

  7. 刘传鹏博客
    刘传鹏博客

    感谢分享

  8. 焱鹏博客
    焱鹏博客

    实用,收藏一下

  9. 点我免费快速排名
    点我免费快速排名

    这款插件确实相当的流行,查看网页源代码会发现,很多博客在使用着它,棒哒哒!

  10. 爱杂侃
    爱杂侃

    nginx还是挺好玩的

  11. 你的名字
    你的名字

    刚换这个又去掉了

  12. 每日一点
    每日一点

    一直没有怎么折腾过wordpress程序

  13. Koolight
    Koolight

    服务器就是好,随心所欲折腾!

  14. 明月登楼的博客
    明月登楼的博客

    Nginx现在好像是越来越流行了!