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

投稿  懿古今 2016-10-04 阅读 215 次 评论 16 条

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,要不然都不会提示升级。

本文地址:http://boke112.com/3560.html
关注我们:请关注一下我们的微信公众号:扫描二维码,公众号:aiboke112
温馨提示:文章内容仅代表作者个人观点,不代表boke112导航赞同其观点和对其真实性负责!
版权声明:本文为投稿文章,感谢 懿古今 的投稿,版权归原作者所有,欢迎分享本文,转载请保留出处!
WordPress免费响应式主题:Nana
CPA教学与引流技巧

发表评论

呲牙憨笑坏笑偷笑色微笑抓狂睡觉酷流汗鼓掌大哭可怜疑问晕惊讶得意尴尬发怒奋斗衰骷髅啤酒吃饭礼物强弱握手OKNO勾引拳头差劲爱你

表情

  1. 金榜台博客
    金榜台博客 【县长】 @回复

    还是服务器好啊

  2. 小萝博客
    小萝博客 【市长】 @回复

    先了解了解

  3. 刘传鹏博客
    刘传鹏博客 【镇长】 @回复

    感谢分享

  4. 焱鹏博客
    焱鹏博客 【农民】 @回复

    实用,收藏一下

  5. 点我免费快速排名
    点我免费快速排名 【农民】 @回复

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

  6. 爱杂侃
    爱杂侃 【镇长】 @回复

    nginx还是挺好玩的

  7. 你的名字
    你的名字 【镇长】 @回复

    刚换这个又去掉了

  8. 每日一点
    每日一点 【农民】 @回复

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

  9. Koolight
    Koolight 【省长】 @回复

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

    • 每日一点
      每日一点 【农民】 @回复

      @Koolight 现在的服务器已经很便宜了,可以折腾试试看

  10. 明月登楼的博客
    明月登楼的博客 【总理】 @回复

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