最佳 WordPress 缓存插件:WP Super Cache
2009年12月05日
WP Super Cache 是 WordPress 官方开发人员 Donncha 开发,是当前最高效也是最灵活的 WordPress 静态缓存插件。它把整个网页直接生成 HTML 文件,这样 Apache 就不用解析 PHP 脚本,通过使用这个插件,能使得你的 WordPress 博客将显著的提速。
WP Super Cache 基本介绍
WP Super Cache 是基于 Ricardo Galli Granada 的 WP-Cache 2。WP-Cache 2 可以缓存你的 WordPress 博客使得不用再次访问数据库,但是它产生的是 PHP 文件而不是 HTML 文件,所以还需要 PHP 引擎去解析它们。而 WP Super Cache 则直接产生 HTML 文件,所以服务器不用解析甚至一行 PHP 代码,所以缓存之后的速度就和访问你服务器上的一张图片一样快。
WP Super Cache 是如何工作的
一半常规的缓存办法是手工把动态页面保存为 HTML 代码,WP Super Cache 也是通过同样的方式的,但是通过自动的方式完成这个过程。
当你一个访问者来的你的站点,他没有登入或者也没有留言,这样他得到是一个在 WordPress cache 文件夹下的 supercache 子文件夹下的纯静态文件,其实你都可以自己到上面的 supercache 目录下去查看同样的永久链接的 HTML 文件的备份。判断一个页面是否已经被缓存了,查看该页面的源代码,看看最后一行是否有 <!-- super cache --> 或者 <!-- super cache gz -->。
如果访问者已经登陆或者留了言,就会返回 WP Cache 函数生成的页面,并且最后一行会有 <!-- Cached page served by WP-Cache -- >
WP Super Cache 基本使用
上传 WP Super Cache 到插件目录,并在 Plugin 目录下激活之后,就可以到 Setting > WP Super Cache 进行详细配置。
WP Super Cache Status
首先是三个选项:
- ON (WP Cache and Super Cache enabled)
- HALF ON (Super Cache Disabled, only legacy WP-Cache caching.)
- OFF (WP Cache and Super Cache disabled)
默认情况下,WP Super Cache 是没有开启的,所以在这里选择下,需按则第一个,就是 Super Cache,缓存为静态文件,如果第二种情况呢,则和 WP-Cache 一致。
Proudly tell the world your server is Digg proof! (places a message in your blog's footer)
这个是说在你的 footer 显示一条信息告诉读者该博客已经缓存了,一般不要这样做。
Clear all cache files when a post or page is published. (This may significantly slow down saving of posts.)
这个是说发布新日志的时候清理所有缓存,这个肯定不能这么干了。
Super Cache Compression
启动这个则会成生 gzip 压缩,节省你的带宽。
Mod Rewrite Rules
WP Super Cache 是通过 Mod Rewrite 实现访问静态文件的,所以这里在是显示添加的 Mod Rewrite 规则。
Expiry Time and Garbage Collection
过期时间和垃圾收集,这里主要设置缓存文件过期时间,和多久删除一次过期的缓存文件。个人建议:一般缓存时间设置为1天(86400)左右,缓存删除时间为1个小时一次。
Accepted filenames, rejected URIs
这里设置一些链接不需要缓存,并且可以设置特例。
Rejected User Agents
这里设置某些 User Agents 来访问的时候不会缓存。比如 Google 和百度爬虫等。
Cache Contents
这里显示你博客缓存文件和过期文件的数量,你可以手工删除缓存文件和过期文件,因为 WP Super Cache 有垃圾回收机制,所以这里不帮不用手工删除,如果当你测试某个插件,看不到效果的时候,如果确定是缓存的原因,你可以到这里手工删除测试下。
Lock Down
一般情况下,某篇日志如果有了新留言,就会更新缓存文件,不过这篇日志是否已经到了缓存时间,但是在某种情况,你预料到你的博客可能会有很大流量和留言,候重复更新缓存文件可能并不是很好的选择,速度反而更慢,这个时候你就可以锁定缓存文件,新留言不再更新缓存日志。
插件作者也给出了一段代码,如果你的博客锁定了之后,可以通过判断一个变量 WPLOCKDOWN 是否存在告来诉读者,你博客已经锁定,待会才会更新,当然了,一般博客不建议使用。
Directly Cached Files
直接缓存文件,根据永久链接直接缓存,比如你的关于页面是不太更新,你就可以直接缓存它到你的 about 目录下(假如你的关于页面的 slug 是 about),这个直接缓存不会过期。适合一些经常性不更新的静态页面。
Configuration messed up?
因为上面那么多配置,你可能搞糊涂了,那么这里可以让你一键恢复到默认。
Cache Plugins
缓存插件还支持附加插件,比如作者自己就提供一个插件:No Adverts for Friends,不对朋友显示广告。
附加说明
- 登陆了和留言之后是看不到静态缓存页面的,看到的效果和原来的 WP-Cache 插件一样的,一般来说留言的同学不是那么多。
- 这个插件通过 Mod Rewrite 来是实现访问静态缓存页面,所以首先你的主机要支持 Mod Rewrite,然后你要在 WordPress 后台启动永久链接。
- 一些动态的时时更细的插件,如 Recent Comments,Recent Posts 等,一个很好的解决方法是通过 Javascript 来实现。所以同理 Sidebar 更新也只能在静态页面刷新的时候更新。我以后会讲解下如何实现 JS 实现 Recent Comment, Recent Post, 和 PostViews 。
- 不要使用性能很差的主机,尽管缓存了,但是还是不行的,这里我个人推荐我和朋友一起搞的主机:WFANS 主机。
- 还有很多依赖于刷新数据的插件,如 SK2, Bad Behaviour 等可能不起作用。缓存总归会带来一点那个灵活性的不足。
这个插件我也使用的时间也不是很长,如果大家有什么新的发现,也可以留言告诉我!
53 条评论 添加你的评论 →

1. cooolo | 2008:10:27 - 08:25:41 | #
偶的神啦,偶要找的就是这孩子
2. 老孔 | 2008:10:27 - 08:52:22 | #
不知道和cos-html-cache比较哪个好一点?
ps:“WP Super Cache是如何工作的”开头”一半“错别字咯
3. Mo | 2008:10:27 - 11:05:23 | #
俺来测试下^-^
4. istef | 2008:10:27 - 11:45:07 | #
用 wp-spamfree 插件代替 sk2 就不会和 super-cache 冲突了,总的来说 super cache 已经非常好了。
5. 火星人 | 2008:10:27 - 14:15:20 | #
不知道效果怎么样,试试吧
6. 安胖 | 2008:10:27 - 14:34:01 | #
cos-html-cache不能缓存分类页或存档页,不知道这个行不行?
7. zEUS. | 2008:10:27 - 15:57:57 | #
这个插件一定要装!
8. 时 | 2008:10:27 - 16:18:56 | #
不错,学习了
9. joojen | 2008:10:27 - 16:23:48 | #
确实很好用,用的cos html cache缓存后老是有问题
10. marslau | 2008:10:27 - 16:55:46 | #
文章、存档、页面、分类都能生成缓存,感觉比 cos html cache 好用,在wp官网上的cache类里,下载数量是最多的。
不过,有个问题,想向Denis请教,生成静态缓存以后,文章的浏览数就不变了,请问你是怎么做到了使其随着点击而变化?
11. Denis | 2008:10:27 - 16:58:17 | #
postview JS 化!
12. utom | 2008:10:27 - 18:18:30 | #
发现楼主缩减feed输出了… 此插件我一直在关注…
13. utom | 2008:10:27 - 18:18:51 | #
发现email填错了..
14. Denis | 2008:10:27 - 18:45:28 | #
还是全文输出啊!
15. Rey | 2008:10:28 - 15:29:20 | #
太感激了…这个我找了N久了- -
16. joojen | 2008:10:28 - 20:40:10 | #
发现个新的问题,文章中插入的google ad无法显示了,js缓存还是有冲突。
17. Denis | 2008:10:28 - 20:42:06 | #
我一般使用插件插入 google adsense。
18. joojen | 2008:10:28 - 20:59:24 | #
我也用的插件,可是开启Super cache之后页面还是无法显示,只开启cache显示是正常的
19. Denis | 2008:10:28 - 21:07:11 | #
我用的是自己写的插件,不知道你用的是什么插件,不知道是什么机制。
如果只是启用 cache 的话,效果不是很好的。
20. joojen | 2008:10:29 - 14:19:16 | #
用的MightyAdsense插件
21. Denis | 2008:10:29 - 15:41:12 | #
没有使用过这个插件,不知道什么原理。案例是不会冲突的。
22. Douz | 2008:11:03 - 01:49:04 | #
前一段时间也用过一下,但是发现在单个文章页面不知道什么原因的会出现乱码,不得已就将其删除了。而且这个插件还有个不好的地方就是他在添加.htaccess的时候是覆盖而不是追加,要是你原来里面有点什么的话,那就有点问题了,建议安装时候事先备份.htaccess 文件
23. jamesben | 2008:11:03 - 22:08:08 | #
super cache的管理界面是白屏~~真奇怪,,,,又解决办法么,老大
24. sxyangwei | 2009:01:05 - 10:18:43 | #
我的也是啊 不知道你解决了没有 麻烦告我一下
25. jamesben | 2009:01:05 - 11:30:23 | #
升级到2.7后,我就没有用了,搞不定
26. 雪深 | 2008:11:06 - 11:26:22 | #
手动生成 比较麻烦
27. 新手 | 2008:11:22 - 18:33:51 | #
测试完返回首页提示:
Forbidden!
You don’t have permission to access this URL, please contact with your system administrator.
禁止访问!
您没有权限浏览这个URL地址,请联系您的系统管理员。
28. shamas | 2008:11:28 - 16:01:01 | #
我的设置ON,但好像看不到生成的静态文件
29. 崔玉松 | 2008:11:28 - 18:31:35 | #
顶一下楼上,我已经安装了,但是依然看不到任何静态文件,只是在content目录下生成了一个cache的文件夹,里面没有任何静态文件
30. Denis | 2008:11:28 - 19:21:53 | #
你们的服务器支持吗?
你设置了 permalink 了吗?
31. Cauu | 2008:12:06 - 00:33:48 | #
试验一下,效果不错
32. Cauu | 2008:12:06 - 11:03:30 | #
有新留言就会更新缓存吗?我怎么没发现我的更新呢?why?主题的原因?
33. popdo | 2008:12:17 - 17:06:44 | #
我有点不理解,。呵呵
文中说:建议缓存1天时间,每1小时删除一次。
那不是只缓存了一个小时就删除重新缓存了!
34. chenlb | 2009:05:10 - 20:12:33 | #
“每1小时删除一次”应该是只删除无效的缓存内容,如一天前的缓存结果。“缓存1天时间”一天过了后就就重新生成,但不删除旧的缓存。
我是这样理解不知是否正确。
35. 木子悦 | 2008:12:18 - 21:17:09 | #
有利也有弊,就是这样的……
36. nooidea | 2008:12:19 - 23:23:22 | #
太感谢了
这篇写的详细
Rejected User Agents
这里设置某些 User Agents 来访问的时候不会缓存。比如 Google 和百度爬虫等。
怎么设置呢?
会导致不收录吗
37. Denis | 2008:12:20 - 00:02:54 | #
默认已经设置了。
不会导致不收录!
38. cache好 | 2008:12:22 - 20:37:22 | #
不少国外主机都有过于限制cpu和内存的毛病,cache是必不可少啊
39. Douz | 2009:01:11 - 15:43:44 | #
Super Cache Compression
这个选项为什么和某些主机相互冲突呢?我开启了这个选项之后,所有的页面都看不见了,包括后台的页面。只好通过FTP将插件删除了才可以重新访问?
40. Alvin.J | 2009:03:30 - 01:15:00 | #
哈哈,写的很详细!支持一下!
41. 精灵 | 2009:03:30 - 09:40:42 | #
看到有说用super cache后要把永久链接加上.html。这个是不是必须的?不加可否?
42. holianchao | 2009:04:24 - 09:47:40 | #
兄台,这是不必要的,这个永久链接你可以根据自己要求设置! 只要符合语法就行了. 欢迎到我的做客呀!
43. 香饽饽 | 2009:03:30 - 11:15:45 | #
这文很棒
44. atp | 2009:04:09 - 12:50:19 | #
test your super_cache
45. 5iwudi | 2009:08:22 - 17:34:10 | #
可是我为什么我这里还是没有实现呢,有群吗,能交流吗,非常感谢,我下的是最新的
46. Louis Han | 2009:10:09 - 13:14:09 | #
看了一下留言,好像是有一些问题没有解决
暂时先不用了,学美国佬继续观望
47. alpha2beta | 2009:11:13 - 20:20:53 | #
想问一下怎么验证这个插件的Super模式是否生效了呢?因为我用的是Lighttpd,而WP Super Cache需要Apache的Mod_rewrite,但我两次刷新页面看到的WP Super Cache的时间戳都一样,是否说明已经生成了静态页面呢?
48. SATURN | 2009:12:07 - 21:02:34 | #
想问一下这个插件卸载的时候有什么注意事项么?直接在后台卸载就可以么?
在网上搜索的时候有的人说卸载很麻烦。。。
49. Leo | 2009:12:30 - 15:25:31 | #
您好,我装了这个软件,开始可以正常使用,后来迁移过一次主机,然后就无法正常生成缓存了,查看页面源文件,显示:。请问你之前有遇到这样的问题吗?如何解决呢,谢谢!
50. Leo | 2009:12:30 - 15:43:11 | #
查看源文件,提示:WP Super Cache is installed but broken. The path to wp-cache-phase1.php in wp-content/advanced-cache.php must be fixed!
51. Denis | 2009:12:30 - 19:03:52 | #
卸载了重新安装!
52. 柱子 | 2010:01:11 - 10:33:03 | #
如何查看插件已正常工作?
53. Landon | 2010:01:30 - 09:21:22 | #
等流量足够大再用也不迟。