方法/步骤
利用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文件中。
wp super cache的设置很重要,一定要设置对。
设置好后,插件会提示说找不到 mod_rewrite 模块,这个不用管它,其实已经达成作用了。
选择mod_rewrite 缓存模式。“压缩页面以便让来访者更快浏览。 (推荐)”不要选择,因为选择了以后,服务器会生成zip的文件,最终还是要通过PHP模式来访问。
“不要为已知用户缓存。 (推荐)”这个选项可以选择,已知用户就是WP会员,包括你自己的admin帐户。
“缓存重建”和“移动设备支持”可以选择。
“当有新文章或页面的发布或更新时清除之前的缓存文件。”这个选择,每次你发新文章时会生成新的缓存文件。
“首页额外检查”不用选择,因为选择了同样会占用内存。
“当某页面有新评论时,只刷新该页面的缓存。”这个选择。
重要:禁用垃圾收集器。垃圾收集器会每隔几分钟检查缓存,过期的就会重建,其实这个过程非常地占用内存,一定要把时间设为0,除非你的内存很大不在乎。
然后选项卡上的“预缓存”一定不要进行设置,那个我试过,他会把你网站的所有文章都生成一次缓存,这个过程中,你就等着服务器宕机吧!
所有设置就这些,其它的设置靠你自己来慢慢摸索吧。现在我的网站经过静态化以后,访问十分快速,不得不说nginx的服务器对于静态网页的处理确实很厉害。如果你用着nginx的服务器,一定不要浪费它的这个长处,尽量把网页静态化处理。
转载请注明:轮回阁 » Wordpress静态插件wp super cache在Nginx下的设置
特别说明:所有资源均无解压密码且可直接下载,若有会特别注明,部分回复可见内容仅为提供更多的下载点。