昨天晚上在改 Hyper Cache插件,以便使其更轻巧。但是遇到一个棘手的问题没有解决,暂时也没什么合适的办法,所以重新启用了wp-super-cache插件,因为服务器是Nginx的,所以无法启用它的mod_rewrite(最优缓存模式),后来@杜小白 童鞋告知她有,今天遂搬运过来,我这也已经用上了,再做个记录。
将以下代码扔到nginx.conf中,然后重启nginx。
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; }
其中小白童鞋都做了详细的注释,根据自己需求改吧!
我这边是取消了这一段,对于已经留言过的用户也进行了缓存:
# 针对已登录用户(发表过评论),可以不静态化。在访问量高峰时可注释掉 if ($http_cookie ~* "comment_author_|wordpress|wp-postpass_" ) { set $supercache 0; }
其他根据自己需求咯~
小白的文章写的很全面,很详细,这里只搬了我用到的一部分,详文请移步:原文。
额, 我博客的流量不大,暂时用不到缓存插件,我的主机也是Nginx的,到时候应该会用得到,感谢分享啊!
@瓜瓜 我也是做个记录,以免以后找不到。。。
@瓜瓜 受用
知道自己写的东西对你有用,无比地开心呐!
@杜小白 哈哈,很有用的~
不是Nginx主机不担心 :mrgreen:
目前不需要这个插件。。。访客人不多
备注的很全面
@喜豆 喜豆
都阿里的vps还用插件啊。
一般国内都不要插件了
nginx,但开启的是php缓存模式
最近wp搬家到 VPS 上头,装的是军哥的LNMP1.0一件安装包,也装了WP super cache,用此处提供的方法,确实能正常用Mod_rewrite方式生成静态页面。
但是同时也遇到一个问题,分类页面在有更新后,无法rebuild cache,主页能够正常rebuild。
请问,怎么解决这个问题?
放进去网站就打不开了是什么情况