目录
您在 WordPress 网站上知道并使用多少种类型的缓存?
如果您使用的是像 WP Rocket 这样的 WordPress 缓存插件,毫无疑问您已经从其浏览器和页面缓存功能中获利。如果您还使用其高级缓存选项,那么您的网站也喜欢移动和用户缓存。
然后是服务器端缓存(如 Varnish 或 NGINX)和 CDN 缓存:前者取决于您使用的主机,而后者取决于您选择的 CDN 服务。
您要添加到组中的最后一种缓存类型是对象缓存:这对于使您的数据库查询运行得更快并最终提高您的网站速度非常重要。
在这篇文章中,我们将探索对象缓存的秘密,并深入研究最流行的对象缓存系统之一:Memcached。
Memcached 不应与 Memcache 混淆,后者是为 Memcached 缓存服务创建的 PHP 扩展,这不在本文的讨论范围之内。
Memcached 和对象缓存用简单的英语解释
在深入了解 Memcached 的细节之前,让我们解释一下对象缓存的精确作用。
如果页面缓存负责缓存静态资源(图像、HTML、CSS 和 JS 文件),而浏览器缓存管理浏览器中的相同资源,则对象缓存将专用于您的数据库。
对象缓存的目的是缓存数据库中的查询结果。您可以在这里找到有关什么是对象缓存的详细说明。
高效的数据库是快速网站的关键因素之一:WordPress 是一个内容管理系统,自然依赖于其 MySQL 数据库。
每次用户(或爬虫)在您的网站上发出请求时,他们都会生成数据库查询。如果您的网站遇到大量数据库请求,查询可能会迅速堆积,使您的服务器不堪重负并减慢您的网站速度。
好消息是 WordPress 很久以前就引入了它的对象缓存类:2005 年,名为 WP_Object_Cache 的类被实现到 WordPress 核心中。
WordPress 对象缓存有什么作用?
WordPress 内置对象缓存保存了复杂查询的副本,并将其结果存储在数据库表中(即,类似于 HTTPS 重定向)。
在您网站页面上运行的最常用的查询存储在数据库中:此请求副本可以减少加载时间并使您的网站性能更高。
当然,这个过程并不是 WordPress 网站的特权:同样的事情发生在所有实施了对象缓存系统的网站上。
例如,Drupal 是另一个非常流行的内容管理系统,它实现了类似的内置对象缓存系统。
如果对象缓存正常工作,则您的服务器不必每次都重新生成查询的结果,但它可以使用之前创建的对象缓存层。
要存储对象缓存,您可以使用不同的技术:最流行的对象缓存引擎包括 Memcached、Redis 和 APC。
什么是 Memcached?
Memcached 是一个开源分布式内存缓存系统,旨在减轻动态 Web 应用程序(如电子商务商店或需要登录/注册的网站)的数据库负载。
Memcached 最初由 Brad Fitzpatrick 于 2003 年开发,现在被 Facebook、Twitter、YouTube、Wikipedia 和其他大小 Web 应用程序使用。
其开发人员将其定义如下:
Memcached 是一种内存中的键值存储,用于存储来自数据库调用、API 调用或页面渲染结果的小型任意数据(字符串、对象)。(源)
此系统存储字符串和对象的键值对数据,例如:
- API 调用
- 页面渲染
- 数据库调用的结果
Memcached 使用基于四个组件的客户端-服务器架构:
- 客户端-服务器,它保留可用 Memcached 服务器的列表
- 一种基于客户端的哈希算法,它根据请求的 “key” 来选取服务器。
- 一个服务器软件,将值 + 键的组合存储到内部哈希表中
- 最近最少使用 (LRU) 算法,用于决定何时使用旧数据或内存
Memcached 的工作原理
Memcached 的工作方式与其他缓存系统类似,但现在数据库是该过程的核心。
让我们通过五个快速步骤来查看工作流程:
- 客户端-服务器接收来自用户的查询(即,通过 HTTPS 重定向访问网站的特定 URL);
- 客户端-服务器与 Memcached 服务器检查所需的数据是否已经存储在其内存中;
- 如果数据存在,Memcached 直接返回给客户端服务器;
- 如果数据尚未保存在缓存中,则 Memcached 会将请求转发到数据库;
- 请求的数据现在被转发到客户端-服务器,同时,Memcache 索引被更新为这些最新值:缓存现在可以在将来使用(参见第 3 步)。
通常,Memcached 是通过不同的 Memcached 服务器和客户端设置的,这有助于分配请求的负载。
客户端-服务器使用哈希算法来决定应将请求转发给哪个 Memcached 服务器。
需要注意的是,Memcached 服务器不共享数据:因此数据库一次只向一个 Memcached 服务器发送数据。
如何在您的 WordPress 网站上使用 Memcached?
在您的 WordPress 网站上使用 Memcached 的第一个条件是您的托管服务器已安装它。
第二个条件是您的 Web 应用程序可以支持 Memcached。
由于 Memcached 完全依赖 RAM,因此不需要太多的 CPU 资源。
一些网络托管服务在其云服务器上预装了 Memcached 系统:您可以在 A2 Hosting、Cloudways 或 Siteground 上找到一些示例。
如果您的服务器支持 Memcached,您很可能可以通过预构建的 Memcached PHP 扩展来使用它。
在您的 WordPress 网站上使用 Memcached 有什么好处?
Memcached 的主要优点是所有信息都存储在 RAM 中:这意味着它不需要每次都从磁盘加载。
另一个优点是没有数据限制:您可以使用 Memcached 缓存许多不同的数据,例如文档、图像,但最重要的是,更复杂的结构。
此外,根据您设置的使用环境,其中一个 Memcached 服务器的故障通常并不严重。事实上,大多数时候,Memcached 被用作只读缓存或保存临时信息。如果将其用于持久性数据,则可以退回到另一种查找方法,该方法将数据重新加载到其他服务器的 RAM 中。
WP Rocket 与 Memcached 兼容吗?
作为一个专注于页面缓存的插件,WP Rocket 不负责对象缓存。所以你不会找到任何特定的 Memcached 选项。
这意味着如果要同时使用 WP Rocket 和 Memcached,需要安装一个额外的Memcached插件。

发表回复