在缓存方面,有很多不同的类型。有浏览器缓存和页面缓存,更不用说移动端缓存和用户缓存了。如果您使用的是WP Rocket,那么您已经从这些缓存中受益了。但另一种您可能要添加进来的应该是对象缓存。
对象缓存涉及存储数据库查询,在您的WordPress网站上启用对象缓存后,它可以帮助加快PHP执行时间,减少数据库负载并更快地将内容传递给访问者。
在本文中,我们将介绍什么是对象缓存以及它如何与WordPress配合使用(包括WordPress提供的内置对象缓存)。我们还将探讨几种不同的方法,可以在您的网站上实施这种类型的缓存以提高其性能。
什么是缓存?
首先,让我们看一下将对象缓存置于上下文中的一般缓存。
缓存是将经常访问的数据临时存储在缓存中的过程,因此您可以将其重用于后续请求。
当某人登陆您的站点,并且您未启用缓存时,他们的浏览器会将对该页面的请求发送到您的服务器。然后,您的服务器处理该请求,编译页面,然后将其发送回浏览器。
如果您的网站流量少,那么服务器可以非常轻松地处理,因为它只需要不时地处理和编译页面。但如果服务器运行的是大型网站,随着请求的到来,它们不得不更加努力地在一秒内处理多个页面。
这时候,我们就需要使用缓存来减轻服务器的负载压力。它存储每个请求的副本,然后在下一个相同请求到达时,它检查缓存并从那里提供服务。如果没有副本,该请求将发送到服务器进行处理和编译,并在返回浏览器的途中将副本存储在缓存中。
缓存的好处在于,它使您的服务器免除了必须要做的更多工作,从而可以处理比其他服务器更多的流量。它还使用户能更快地查看页面,大大提高了用户体验。
如果您想了解有关缓存工作原理的更多信息,请查看为什么缓存插件对WordPress网站至关重要。
不同类型的缓存
缓存有两种主要类型:客户端缓存和服务器端缓存。
客户端缓存的类型很多,但是您可能最熟悉的一种是浏览器缓存。这是浏览器在其中存储静态网页内容的位置,因此下次有人访问您的网站时,该页面将从其计算机上的缓存中拉出,而不是再次下载。
对象缓存是服务器端缓存的一种。服务器端缓存的类型很多,但是重要的知识包括:
1.对象缓存。我们将在下面对此进行更详细的介绍,但是对象缓存涉及存储数据库查询,以便下次需要数据时,无需查询数据库即可从缓存中传递数据。
2.页面缓存。页面缓存涉及存储页面的整个HTML,以便在后续视图中可以生成和显示内容(包括文件和数据库查询),而无需WordPress每次都这样做。
3.操作码缓存。操作码缓存涉及在每个请求之间编译PHP代码。为了执行PHP代码,PHP编译器必须先编译代码,然后生成可执行代码供服务器执行。操作码缓存已编译的代码。
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上提供的免费插件。
活动安装超过30,000,最流行的选择是Redis Object Cache。它支持Predis、PhpRedis(PECL)、HHVM、复制、群集和WP-CLI。
使用此插件之前,您需要检查您的站点是否正在使用具有所需PHP Redis
扩展名和正常工作的Redis服务器的PHP环境。
如果一切就绪,则此插件的安装非常简单-只需激活该插件,转到“设置”>“ Redis”,然后单击“启用对象缓存”即可。
此外,您还可以选择另一个插件:WP Redis,它的设置有些复杂。该插件要求您创建一个名为 object-cache.php
的文件并将其添加到wp-content
文件夹中,并编辑wp-config.php文件。
如果WP-CLI是开发工作流程的重要组成部分,则可能会发现使用WP Redis更为方便,因为它附带了各种命令。
2.询问您的主机商
如果您使用托管型WordPress主机,则您的主机可能会通过Redis提供对象缓存。因此,请查看主机的文档,以获取有关如何启用对象缓存的信息,或者与您的主机商联系以检查其是否可用。
如果您使用的是虚拟主机,一般是没有提供这些高级缓存服务的。如果您无法使用对象缓存,则可能要考虑升级为云服务器。
在这里,我们推荐大家购买 阿里云、腾讯云 等大厂的云服务器,记住一点,不要再去使用虚拟主机了,虚拟主机是没有办法做优化的。
小结
对象缓存为提高数据库性能提供了一个相对简单的解决方案,尤其是考虑到WordPress性能在很大程度上取决于数据库的速度这一事实。
借助Redis之类的解决方案,您可以在站点上快速启用持久性对象缓存,但是前提是,您使用的是云服务器或者托管型WordPress主机,才有可能启用这类高级缓存服务。
更多教程: