WordPress 静态缓存:预缓存功能为什么这么重要?

Preload-Cache

很多 WordPress 网站都使用页面静态缓存功能提升前端加载速度,这种方式可以大幅缩短服务器相应时间。其原理就是:当访客浏览任何已缓存的页面时,无需等待PHP与数据库的执行,服务器直接返回已缓存的HTML页面,缩短TTFB等待时间。

为什么需要预缓存?

部分的静态缓存插件使用或默认使用的是被动缓存方式,也就是说页面被首次浏览的时候,插件程序生成静态缓存,下次再被访问时则返回缓存好的HTML页面。

这样看起来也没有问题,但不能忽略以下几个方面:

页面首次浏览者可能是搜索引擎爬虫

通过 API 等方式向搜索引擎自动提交URL的方式已经广泛流行,例如百度的主动提交API、或是必应搜索的立即索引(IndexNow) 功能等。

如果通过 API 自动提交URL给搜索引擎的话,当新的文章发布的那一刻搜索引擎的爬虫可能会很快抓取该页面。假设采用的是被动缓存方式的话,爬虫抓取的将是未经缓存的、相应缓慢的网页,这不利于SEO。

内容较多的网站选择缓存有效期是个麻烦问题

几乎所有的 WordPress 静态缓存插件都有缓存有效期选项,当缓存到期后,会自动清除该页面的缓存。但并不是所有的插件会在缓存被清除后自动生成新的缓存,而是等待被再次浏览后生成。

那么会出现一个空档期,部分页面处于无缓存状态。在此期间,不论是访客还是爬虫,都有可能访问这些页面,造成不太好的速度体验。

有的网站会将缓存有效期设置为永久有效,如果网页内容永远不会变化,这是个好办法。但如果网页上有“最新文章”、“推荐文章”、“相关文章”、“留言评论”等内容的话,用户看不到这些变化。

什么是预缓存功能?

预缓存就是主动缓存而非被动缓存,只要符合缓存规则的网页,不论是否被访问都会自动生成静态缓存。这样一来就可以解决上述问题了。

不过有些插件的预缓存功能并不完美,例如 WP Super Cache (超级缓存) 插件,它支持预缓存,但仅能通过固定的时间周期计划生成。这就为用户带来一些小麻烦,假设时间周期设置太短,则有可能让服务器消耗过大;时间周期设置太长,则可能让部分页面无缓存的状态持续较久。

如果文章内容较多而服务器配置较低的话, WP Super Cache 的预缓存功能则有可能需要较长的时间,且有可能造成CPU占用率持续达到100%的状态。

WP Rocket 提供最佳预缓存解决方案

自 WP Rocket 3.12 版本开始,引入新的预加载缓存功能。该功能具有以下特点或优势:

  1. 默认预加载站点地图(Sitemap)中的所有URL,兼容第三方插件生成的Sitemap。如果有不需要预缓存的URL,可在设置中添加排除规则(支持通配符)。
  2. 当已缓存页面到期后(有效期可自定义),插件自动生成新的缓存,这样几乎达到随时提供已缓存页面以供访客浏览,又能兼顾页面内容的新鲜度。
  3. 预加载每批次仅处理45个URL,且每批次之间间隔60秒,这样一来绝大分部的主机都能轻松承受,在处理预加载时不会因资源耗尽而影响正常访问
(0)
打赏 微信扫一扫 微信扫一扫

推荐阅读

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

微信

联系我们

400-800-8888

在线咨询: QQ交谈 邮件:admin@example.com 工作时间:周一至周五,9:30-18:30,节假日休息

联系
联系
邮件

kbr@qq.com

扫码
扫码
返回顶部