WP Super Cache静态缓存插件应该可以说是最受欢迎的缓存插件,不过WP Super Cache缓存插件主要是针对Apache服务器而言,对于Apache服务器的站点安装启用插件后直接在后台进行设置就可以使用,但是对于Nginx服务器的站点选择mod_rewrite缓存模式就没有起作用,因为Nginx并没有Apache的mod_rewrite模块,想要使用还必须往配置文件加入一些规则以实现和Apache的mod_rewrite模块相同的功能才行。所以今天就将懿古今和boke112导航开启WP Super Cache静态缓存插件的全过程分享给大家。
PS:为什么要纠结于mod_rewrite缓存模式呢?这里引用知更鸟大神的话来回答大家:“如果选择非推荐的 mod_rewrite 缓存模式,缓存效果一般,个人感觉也就没必要使用这款缓存插件了。”
Nginx服务器使用WP Super Cache静态缓存插件详细步骤:
1、只要将以下代码中的2~57行添加到网站对应的nginx location中,保存好配置文件后记得重启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;
}
代码来自:公子府
其中代码中已经有很详细的注释了,这里就不再多做解释,我直接复制粘贴使用,没有修改。
2、WordPress后台安装并启用WP Super Cache,具体安装过程就不再啰嗦了,请自行安装。
3、进入到WP Super Cache插件的“高级”选项,进行以下操作,并点击【更新】和【更新Mod_Rewrite规则】:
- 勾选“启用缓存以便加快访问。(推荐)”
- 选择“mod_rewrite缓存模式。”
- 勾选“缓存重建。当新缓存生成时调用缓存文件给匿名用户。(推荐)”
- 勾选 “首页额外检查。(极少数情况下会停止对首页的缓存)(推荐)”
- 勾选“当某页面有新评论时,只刷新该页面的缓存。”
4、到期时间和垃圾回收期的设置,其中缓存超时时间设为0秒,计划选择时间,并设置为00:00小时:分钟,然后点击【修改过期设置】。
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浏览器的无痕模式打开我们站点的首页),如果看到有如下图所示的就表示已经正常使用了。
WP Super Cache插件是否会影响计数?
其实文中第五步已经设置了WP-PostViews插件在开启缓存的情况下是可以正常计数的,只不过是在后台统计,而未能实时显示浏览数而已。对于这种问题我们可以看看知更鸟大神对这个问题的答复:
对于这个未能实时显示浏览数的问题,我就懒得去折腾了,毕竟我也不可能每时每刻去盯着这个浏览数的变化。对于想实时显示浏览数,除了求助度娘自己折腾外,最好的办法应该就是不用缓存插件改用CDN加速。
WP Super Cache插件导致部分主题弹窗失效的解决办法
造成这个问题的产生大部分都是因为很多主题作者为了解决多次调用jquery,或者jquery加速问题会自己另外加载jquery,在正常情况下是没有问题的,不过启用WP Super Cache缓存后,WP-PostViews插件会自动加载WordPress自带的jquery,从而导致JS冲突。解决的办法就是在后台 - 插件 - 已安装的插件 - 直接编辑wp-postviews插件,在wp-postviews.php文件中找到以下代码:
wp_enqueue_script( 'wp-postviews-cache', plugins_url( 'postviews-cache.js', __FILE__ ), array( 'jquery' ), '1.68', true );
直接修改为
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,要不然都不会提示升级。
发表于2016-10-01 15:51 沙发
我个人感觉一般的缓存插件都比wsc要强大。
@Koolight每一款缓存插件都很厉害的,应该是我们不太懂得设置而已
@懿古今我现在用的一款纯静态的缓存插件再加上CDN,计数不统计了,阅读量和评论大致保持一致。也不管了。
发表于2016-10-01 17:21 板凳
[呲牙] 这速度
@李主席[呲牙] 打开速度是否有提高?不过我用网站测速竟然都是红的,心都凉了
@懿古今访问速度挺快的。yigujin.wang电信访问很快,我看下载速度都能达到700kb/s 联通移动好像就慢了,是不是虚拟主机的问题?我的是阿里云弹性托管高级版。
@李主席[强] 还是高级版,厉害,我就是使用最普通的ECS服务器
发表于2016-10-01 19:45 地板
赞一个
发表于2016-10-01 21:33 4楼
这款缓存插件,我的博客一直在用,感觉还行!
@我爱动感单车网[呲牙] 我现在也在用,感觉挺不错的
发表于2016-10-02 02:36 5楼
这个插件最麻烦的就是经常需要手动清除一下缓存,要不总会出问题!
@明月登楼[疑问] 这个我还真不知道,不过应该不用吧?评论正常,浏览数隔段时间也显示正常,应该还好
@明月登楼出问题?我还从未遇到过这事!
发表于2016-10-03 08:44 6楼
我是装了一直没用
@唯历史[疑问] 装了没用就有点可惜了
发表于2021-07-04 00:23 7楼
现在WP Super Cache是 WordPress 的亲儿子了!兼容性、稳定性提升都非常明显了!
@明月登楼[大笑] 所以我一直都使用这个缓存插件,挺稳定的