WordPress 缓存:你需要了解的一切

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为你旅程的每个阶段提供云产品。立即开始使用 200 美元免费积分!

这里 是 Delicious Brains 的 Ashley Rich 撰写的关于 WordPress 网站所有相关缓存层级的文章。我想我们都知道缓存很复杂,但天哪,理解所有正在工作的缓存真是一个漫长的过程。缓存的目的是提高速度,并减少对网络堆栈中最糟糕的瓶颈和最慢/最繁忙部分的负担。

以下是我的理解

  • **文件可以被浏览器缓存。** 这是最快的缓存方式,因为根本不会发生网络请求。像图片、CSS 和 JavaScript 这样的资源通常以这种方式被缓存,因为它们不会频繁更改,但你必须确保你告诉浏览器可以这样做,并且要有机制来打破缓存(例如,通过更改文件名)。你很少以这种方式缓存 HTML,因为它变化最多,而 HTML 的文件名缓存清除似乎比它值钱的要难。
  • **文件可以在 CDN 级别缓存。** 这样做很棒,因为即使网络流量正在发生,CDN 服务器也非常快,并且可能比你的源服务器地理位置更靠近用户。如果用户从这里获取文件,他们甚至不会麻烦你的源服务器。你将需要一种方法来打破这种缓存,这通常也是通过更改文件名来实现。你可能会在这一级缓存 HTML,即使没有更改文件名,只要你有一个机制在内容更改时全局清除该缓存。
  • **源服务器可能会缓存构建的 HTML 页面。** 在 WordPress 网站上,页面是用 PHP 构建的,这可能会触发 MySQL 查询。如果服务器可以保存已经执行的东西的结果,这意味着它可以提供一个“静态”文件作为响应,它可以比运行 PHP 和 MySQL 快得多。这对未登录的用户有效,因为他们都得到相同的响应,但不适用于登录用户,因为他们在页面上具有动态内容(例如 WordPress 管理栏)。
  • **数据库有自己的特殊缓存。** 在执行 MySQL 查询后,结果可以保存在 对象缓存 中,这意味着相同的请求可以来自该缓存,而不必再次运行查询。你可以在一定程度上自动获得它,但理想情况下它应该连接到更持久的存储,而这你无法自动获得。

呼。Jamstack 让这一切变得更容易,因为你的页面已经预先构建并托管在 CDN 上,在 Netlify 的情况下,你 甚至不必担心 缓存清除。

但即使像这样复杂,我也不会太担心。这个 WordPress 网站使用 Flywheel 进行托管,它处理数据库和服务器级别的缓存,我在它前面有 Cloudflare,并使用 特殊的 WordPress 优化 进行 CDN 缓存,以及 自己动手实现文件名缓存清除(我希望这部分更容易)。考虑到 Ashley 撰写的关于这方面的优秀文章,我当然也相信 SpinupWP 可以处理好它。

直接链接 →