什么是对象缓存以及如何将其与 WordPress 一起使用

目录

当谈到缓存时,有很多不同的类型。有浏览器缓存和页面缓存,更不用说移动和用户缓存了。如果您使用的是 WP Rocket,那么您无疑已经从这些类型的缓存中受益。但您需要添加到组合中的另一个功能是对象缓存。

对象缓存涉及存储数据库查询,在您的 WordPress 网站上启用后,它可以帮助加快 PHP 执行时间,减少数据库负载,并更快地向访问者提供内容。

在这篇文章中,我们将介绍什么是对象缓存以及它如何与 WordPress 一起工作(包括 WordPress 提供的内置对象缓存)。我们还将介绍几种不同的方法,你可以在你的网站上实施这种类型的缓存,以提高其性能。


什么是缓存?

但首先,让我们看看缓存通常是将对象缓存放入上下文中的。

缓存是将经常访问的数据临时存储在缓存中的过程,以便您可以在后续请求中重复使用这些数据。

当有人登陆您的网站,而您没有启用缓存时,他们的浏览器会向您的服务器发送对该页面的请求。然后,您的服务器会处理请求,编译页面,然后将其发送回浏览器。

如果你有一个低流量的网站,你的服务器可以高枕无忧,可以这么说,因为它只需要时不时地处理和编译页面。但是,托管大型站点的服务器需要完成他们的工作 — 当请求传入时,它们必须更加努力地每秒处理和编译多个页面。

How a server work
服务器的工作原理

这就是缓存可以帮助减轻服务器负载的地方。它存储每个请求的副本,然后下次收到相同的请求时,它会检查缓存并从那里提供缓存。如果没有副本,则请求将发送到服务器进行处理和编译,并在返回浏览器的途中将副本存储在缓存中。

缓存的美妙之处在于,它使您的服务器不必做比它必须做更多的工作,从而允许它处理比其他服务器更多的流量。它还有一个额外的好处,可以更快地将您的内容交付给用户。

如果您有兴趣了解有关缓存工作原理的更多信息,请查看为什么缓存插件对您的 WordPress 网站至关重要。

不同类型的缓存

缓存有两种主要类型:客户端缓存和服务器端缓存。

客户端缓存有很多种类型,但您可能最熟悉的是浏览器缓存。这是浏览器存储静态网页内容的位置,因此下次有人访问您的网站时,该页面将从其计算机上的缓存中提取,而不是再次下载。

对象缓存是一种服务器端缓存。服务器端缓存有很多类型,但需要了解的重要类型包括:

1. 对象缓存。我们将在下面更详细地讨论这一点,但对象缓存涉及存储数据库查询,以便下次需要一段数据时,无需查询数据库即可从缓存中交付该数据。

2. 页面缓存。页面缓存涉及存储页面的整个 HTML,以便在后续视图中生成和显示内容(包括文件和数据库查询),而无需 WordPress 每次都这样做。

3. 操作码缓存。操作码缓存涉及在每个请求之间编译 PHP 代码。要执行 PHP 代码,PHP 编译器必须先编译代码,然后生成可执行代码供服务器执行。Opcode 缓存已编译的代码。

4. CDN 缓存。内容交付网络 (CDN) 使用世界各地的边缘服务器来存储静态网站文件(即 CSS、JavaScript 和媒体文件),以便更快地交付给地理位置远离主机服务器的用户。


那么什么是对象缓存呢?

对象缓存涉及存储数据库查询结果,以便下次需要结果时,可以从缓存中提供结果,而不必重复查询数据库。

作为一个内容管理系统,WordPress 自然而然地严重依赖数据库。因此,数据库效率对于扩展 WordPress 至关重要。

如果您运行一个高流量网站,并且对您的页面的请求生成了大量数据库查询,您的服务器很快就会不堪重负,进而对您网站的性能产生负面影响。

因此,当您的站点启用对象缓存时,它可以帮助减轻数据库和服务器的负载并更快地交付查询。

什么是 WP_Object_Cache?

WordPress 有一个名为 WP_Object_Cache 的内置对象缓存。它于 2005 年推出,提供了一种将数据库中的任何数据自动存储在 PHP 内存中以防止重复查询的方法。

但是,此对象缓存仅存储用于单个页面加载的对象 — 它会在请求结束时丢弃缓存中的对象,因此下次请求页面时必须从头开始重建它们。

虽然这是 WordPress 的一个有用功能,但确保在单个页面加载期间不会对类似的查询请求多次查询数据库,但它并不完全有效。

这就是持久缓存解决方案可以提供帮助的地方。当对象缓存可用于在多个页面加载之间缓存对象时,它的功能会更强大。

Redis 和 Memcached 等外部持久性对象缓存解决方案可以在请求之间持久化对象缓存。这有助于加快数据库查询的交付速度,同时进一步减轻服务器的工作负载。

什么是 Redis 和 Memcached?

如果您希望扩展,持久性对象缓存是必须的。没有它,您网站的性能将随着其复杂性和流量的增加而减慢。登录用户和动态页面也是如此 – 对象缓存可以帮助提供更好、更快的用户体验。

有两个流行的持久对象缓存工具值得一试:Redis 和 Memcached。

这两种工具都是快速而强大的内存数据存储,可以减少您网站的 MySQL 数据库的负载,同时还可以缩短您网站的响应时间并增强您网站扩展和处理增加流量的能力。

Memcached 长期以来一直是一种流行的缓存选择,但 Redis 可以做 Memcached 能做的一切,并且具有更大的功能集。此外,它更受欢迎且支持更好。

要深入了解 Redis 和 Memcached 的功能、优缺点,此 Stack Overflow 线程提供了有关这两种工具的一些很好的一般信息。


如何在 WordPress 中使用对象缓存

默认情况下,WordPress 内置的对象缓存已经在您的网站上运行,因此您无需执行任何操作即可启用它。

但是,如果您想将对象缓存提升到一个新的水平,以便在页面加载之间持久缓存数据库查询,则有一些选项易于实现。

1. 使用 Redis

对于 Redis 驱动的对象缓存,您不能错过 WordPress.org 上提供的免费插件。

拥有超过 30000 次活动安装,最受欢迎的选项是 Redis Object Cache。它支持 Predis、PhpRedis (PECL)、HHVM、复制、集群和 WP-CLI。

在使用此插件之前,您需要检查您的网站是否正在使用具有所需 PHP Redis 扩展和正常工作的 Redis 服务器的 PHP 环境。

如果您准备好了,这个插件的安装非常简单——只需激活插件,转到 Redis >设置,然后单击“启用对象缓存”。

redis object cache plugin

如果您遇到任何问题,您需要再次与您的网络主机检查托管您的网站的服务器是否为 Redis 设置。由于 Cloudways 托管了我的测试站点,因此我必须登录我的站点的仪表板并启用 Redis 作为包,然后才能在 Redis 对象缓存插件中启用对象使用。

或者,您可能想尝试的另一个选项是 WP Redis,它的设置要复杂一些。由网络主机 Pantheon 的人为您带来,此插件要求您创建一个名为 object-cache.php 的文件并将其添加到您的 wp-content 文件夹中,并编辑您的 wp-config.php 文件夹(但前提是您不是 Pantheon 用户)。

如果 WP-CLI 是您开发工作流程的重要组成部分,您可能会发现使用 WP Redis 更方便,因为它带有各种命令。

2. 询问您的主机商

如果您使用的是托管 WordPress 托管,您的主机可能会通过 Redis 提供对象缓存。因此,请查看您的主机文档以了解如何启用对象缓存,或联系我们以检查它是否可用。

许多主机将 Redis 作为功能或附加组件提供——Pantheon、Kinsta 和 Cloudways,仅举几例。

如果您使用的是共享主机,则不太可能免费提供。在这种情况下,如果您无法使用对象缓存,您可能需要考虑升级托管软件包或切换主机。


结束语

对象缓存为提高数据库性能提供了一种相对简单的解决方案,特别是考虑到 WordPress 性能在很大程度上取决于数据库的速度。

借助 Redis 等解决方案,您可以在站点上快速启用持久性对象缓存,无论是通过插件还是简单地要求主机激活它。



评论

发表回复

必填项已用 * 标注