nginx的wp super cache设置

  [复制链接]
查看: 671   回复: 4
发表于 2013-6-5 20:38:50 | 显示全部楼层 |阅读模式
本帖最后由 sure15 于 2013-6-5 20:41 编辑

首先:利用rewrite规则,实现从nginx层面访问wp super cache生成的静态网页,绕过PHP。

location / {
          # 如果请求的文件已存在,直接返回
          if (-f $request_filename) {
              break;
          }
          set $supercache_file '';
          set $supercache_uri $request_uri;
          set $supercache 1;
          set $ihttp_host '';

          if ($request_method = POST) {
              set $supercache 0;
          }

          # 仅在访问文章永久链接时使用静态文件,请求中带参数则不使用静态缓存
          set $qs 0;
          if ($query_string) {
              set $qs 1;
          }

          # 不过从 twitter, facebook, feedburner 链接点过来的,总是带参数,这些访问仍然可以使用静态文件
          if ($query_string ~* "^utm_source=([^&]+)&utm_medium([^&]+)&utm_campaign=([^&]+)(&utm_content=([^&]+))?$") {
              set $qs 0;
              set $supercache_uri $document_uri;
          }
          #deactivate on high load
          if ($qs = 1) {
              set $supercache 0;
          }
          # 针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉
          if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) {
              set $supercache 0;
          }

          # 支持移动设备,访问移动版本的网页缓存
          if ($http_user_agent ~* '(iphone|ipod|aspen|incognito|webmate|android|dream|cupcake|froyo|blackberry9500|blackberry9520|blackberry9530|blackberry9550|blackberry 9800|webos|s8000|bada)') {
               set $ihttp_host '-mobile';
          }

          # 指定静态缓存文件的路径
          if ($supercache = 0) {
               set $supercache_uri '';
          }
          if ($supercache_uri ~ ^(.+)$) {
              set $supercache_file /wp-content/cache/supercache/$http_host$1/index${ihttp_host}.html;
          }

          # 只有当缓存文件存在时,才进行 rewrite
          if (-f $document_root$supercache_file) {
              #rewrite ^(.*)$ $supercache_file break;
              rewrite ^ $supercache_file last;
          }

          # 所有其他请求,转给 wordpress 处理
          if (!-e $request_filename) {
              rewrite . /index.php last;
          }
}


用上面这段规则代替wordpress的规则,即wordpress.conf,或者自己建一个conf,再添加到vhost的conf文件中。


然后:
会出现这个页面,不要管,没事。

“当某页面有新评论时,只刷新该页面的缓存。”这个选择。
“当有新文章或页面的发布或更新时清除之前的缓存文件。”这个选择,每次你发新文章时会生成新的缓存文件。选择上去。
“缓存重建”和“移动设备支持”可以选择。
其它的设置可以自己慢慢摸索。






本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

评分

参与人数 3T币 +4 收起 理由
baiduisbest + 1 谢谢分享!
a219549 + 1 谢谢分享!
luguokankan + 2 新人鼓励下

查看全部评分

发表于 2013-6-5 21:12:43 | 显示全部楼层
什么W3 Total Cache,wp super cache咱都不整,咱不是Apache,裸奔也很爽nginx的wp super cache设置

点评

apache的wp super cache支持的很完美,不用这么麻烦。  发表于 2013-6-5 23:10
回复 支持 反对

使用道具 举报

发表于 2013-6-5 21:25:40 | 显示全部楼层
wp super cache这插件配置起来是很麻烦的,适用于独立主机,动手能力强的站长,谢谢分享
回复 支持 反对

使用道具 举报

发表于 2013-6-5 21:27:07 | 显示全部楼层
感谢分享,这种方法也不错,不过对不懂代码的人来说还是有压力的.

点评

复制一下就行了。。。  发表于 2013-6-5 23:11

评分

参与人数 1T币 +3 收起 理由
心若无尘 + 3 認眞參與

查看全部评分

回复 支持 反对

使用道具 举报

发表于 2013-6-5 21:48:46 | 显示全部楼层
一篇代码,看不懂什么意思,也不知道nginx是什么意思

点评

nginx和apache是一种东西。  发表于 2013-6-5 23:11
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则