- A+
效果
不多比比,直接上图看对比:
没有 WP Super Cache 加载的速度:
有 WP Super Cache 加载的速度:
WP Super Cache 原理
刚刚开始建站还觉得没什么,但是内容一多,我这续了三四年的阿里云1核2G服务器真心顶不住啊,我一个人刷新都这么慢(宝塔后台显示此时CPU占用确实是100%),要是来多几个游客那他们还不急死啊。
俗话说开源节流,但是开源是不可能的,没钱加配,那就只能节流咯。在尝试各种其他奇技淫巧之前,先来看看见效最快的大杀器:WP Super Cache!
想知道 WP Super Cache 为什么能加速之前,先知道为什么普通 WP 网页这么慢。众所周知,个人博客站点分两类:Hugo 之类的静态博客,和 WP 之类的动态博客。动态博客之所以功能强大,就是因为他的功能会动态向服务器交互,页面也是动态生成的,这样一来可不就慢了嘛。
说到这里你应该也猜到 WP Super Cache 加速的原理了:没错,就是把 WP 的动态页面转化为静态页面缓存,这样用户访问的时候,就不是费劲巴拉重新生成页面,而是直接抽出一个静态页面发过去,大大降低了 CPU 消耗。
设置
原小白教程:How to Install and Setup WP Super Cache for Beginners(英文网页)
更详细的参数解说:The Ideal WP Super Cache Settings 2023 (All Tabs)(英文网页)
打开插件设置面板。
通用
高级
首先要知道 WP Super Cache 的工作原理:WP Super Cache 是为每个用户都分别生成缓存(匿名用户,也就是没登录的游客统统算一个用户)。一个用户如果没访问过这个页面,那么第一次访问的时候还是要动态生成一次,这个时候才会得到静态页面缓存,第二次及之后访问就是直接发缓存了。
图中选项几点说明:
- 缓存限制:默认是禁用登录用户的缓存。你像我一样为所有访客启用缓存,那么下面的“启用动态缓存”就不要开,至少在我这里开了“启用动态缓存”后登录用户加载不出来首页。
- 不要为 GET 请求缓存:一般带 GET 请求 是动态页面,不需要也不应该缓存成静态。
- 缓存重建:官方文档是这样说的:当访问者留下评论时,该页面的缓存文件将被删除,下一个访问者将重新创建缓存的页面。一个页面需要一些时间来加载,那么如果在此期间收到 100 个访问者会发生什么?不会有缓存页面,因此WordPress将为每个用户提供一个新页面,插件将尝试为这100个访问者中的每个访问者创建一个缓存页面,从而在您的服务器上造成巨大的负载。此功能可阻止这种情况发生。留下注释时,不会清除缓存的页面。它被标记为重建。接下来 10 秒内的下一个访问者将重新生成缓存的页面,而旧页面将提供给其他 99 个访问者。页面最终由第一个访问者加载,缓存的页面更新。
- 让已知用户匿名使他们浏览的内容是缓存文件:之前我们知道,WPSC是单独为每个用户生成缓存的。这个选项就是一视同仁,把登录用户也当作游客处理。好处就是不用分别生成缓存,管理员先趟一遍就不用游客自己趟了;缺点是因为管理员也被当作匿名,所以如果你的博客站点有很多登录用户而且有区别对待的功能,那别想用了;此外写博客预览用不了(404),因为游客看不了草稿预览。总之这个选项对于小站点收益还不错,但是对于高性能、多用户的站点副作用非常大。
- 启用动态缓存:原教程说:“如果您想在缓存期间保持网页的某些部分动态,启用动态缓存非常有用,尤其是在页面包含频繁更改的内容时。例如,您可以通过允许动态缓存来加快包含广告的网页的速度”。因为我这里和“所有访客启用缓存”冲突,我的博客又没有动态部分,所以不开。
- 移动设备支持:之前我是开的,然后参数教程提到响应式页面不需要(Sakurairo主题就是),我试了一下还真是,就算这个选项关了手机也是嘎嘎快。
- 缓存超时时间:设置一个过期时间,超过这个时间的缓存就之后就会被标记为“过期”,之后会被垃圾回收器清除。
- 计划:垃圾回收器运行的间隔。每隔一段时间垃圾回收器就会检查并清掉被标记为“过期”的缓存。
我们来设想一个工作场景:假设缓存超时时间 = 1小时(3600秒),垃圾回收器的定时器为 40分钟(2400秒)。如果 0:00 时刻,垃圾回收器刚好回收完毕进入冷却的瞬间,用户第一次访问了这个页面生成了缓存。
垃圾回收器在 0:40 执行一次,此时页面尚未过期,缓存自然还在;但是这个缓存在 1:00 时刻被标记为过期,此时却不会立即被删掉,因为下一次回收是 1:20 。如果用户 1:10 再访问一次,速度还是嘎嘎快。
然而,1:20 执行回收时,这个过期的缓存就没了,之后用户再访问就要重新生成一次,然后就此循环。
现在可以讲我为什么要把缓存超时时间 = 1天那么长。因为由上可见,如果缓存短时间内过期,那用户隔了一段时间再来看不还是要重新加载,用户体验必然很差。我上面已经设置了新文章或者更新文章就刷新缓存,而且我就一小博客,不会非常频繁更新页面(秒至分钟级),也没开放注册,所以不需要太快过期。
似乎如果后面设置了预缓存,垃圾回收器会被自动禁用。
articles 是我文章的前缀,根据自己情况填写。文章没必要缓存,一是文章网页生成很快,另外一个是静态文章没法刷新发布时间和阅读量。
预缓存
似乎勾上了第一个选项会禁用前面的垃圾回收器自动执行。
好了,现在开始体验嘎嘎快的网页加载速度吧!
- 我的微信
- 这是我的微信扫一扫
- 我的微信公众号
- 我的微信公众号扫一扫