Web 缓存的类型:WordPress 缓存和页面速度揭秘

快速加载的网站是一种"成败"的大事,尤其是当您为客户构建网站或经营在线业务时.因此,缓存的重要性.在这篇文章中了解 Web 缓存对 WordPress 的重要性.

2020 年 10 月:我们测试了所有最好的 WordPress 主机!了解我们如何比较.查看结果

让您的网站以极快的速度运行需要超乎寻常的努力.

这就是我们聘用 HummingbirdSmush 以优化您的网站和图片.

这也是我们发布关于提高WordPress性能的方法提升您的网站速度.

这篇文章解释了如何通过使用网络缓存来提高您的网站性能并获得超级速度提升.

当你读完这篇文章时,你就会知道:

  • 什么是缓存
  • 提供不同类型的网络缓存
  • 网络缓存的缺点
  • WPMU DEV 如何以最少的现金最大化您的网络缓存
  • ...甚至如何正确说"缓存"(发音为"现金,"不是 cayche、cash-ay 或乳蛋饼).
Cartoon illustration of DevMan bathing in wads of cash.
与我们一起主持,我们将为您提供大量缓存!

什么是缓存?

缓存是一种临时存储经常访问的数据的方式.这是一种存储可重用响应以加快后续请求的方式.

当用户对缓存内容发出后续请求时,这些请求将从缓存中完成,而不是一直返回到最初存储内容的服务器.

简而言之,当有人访问您的网站时,缓存会获取您页面的静态快照,然后存储该快照并将其提供给您的访问者.

这可以让您的信息快速传递,而不是让您的访问者等待各种请求的提出,这会减慢一切.

实际上,与原始数据所在的位置相比,缓存提供了一种更简单、更快捷的机制来将存储的数据交付给用户.

所以,把这个放在上下文中......

以下是网页加载方式:

Client-Server web page requests.
网页通常如何加载.
  1. 在线用户点击指向您网站的链接(来自搜索结果、另一个网站、社交媒体帖子、电子邮件等)
  2. 用户的浏览器向您的服务器发送请求(称为 HTTP 请求).
  3. 您的服务器会编译并提供在用户浏览器中显示网站所需的所有文件(要编译的每个图像、文件、脚本、样式表等都会增加此请求的时间).
  4. 最终会通过浏览器为用户提供一个完整且完全加载的网站.

现在,让我们将此与为您的网站启用缓存时发生的情况进行比较:

Web Caching Diagram
网络缓存如何缩短页面交付时间.
  1. 在线用户点击指向您网站的链接(来自搜索结果、另一个网站、社交媒体帖子、电子邮件等)
  2. 用户的浏览器向您的服务器发送 HTTP/HTTPS 请求.
  3. 服务器检测到自上次有人访问您的网站以来您的内容没有更改.
  4. 服务器获取您网站的静态副本,该副本存储在其缓存中,并将其快速传送到用户的网络浏览器.
  5. 服务器对所有后续访问重复 #4,直到页面上的内容发生更改或缓存过期并自动清除.

编译请求页面的每个元素比仅仅提供该页面的存储副本花费的时间更长.因此,缓存可以减少处理时间并更快地交付页面.

为什么要使用缓存?

缓存的主要目的是速度.

缓存可能是唯一直接影响页面速度得分的因素.

缓存 = 更快地加载页面 = 更好的页面速度得分.

但是有一个权衡.为了节省时间和加快速度,缓存需要存储.

因此,更快地交付页面的计算时间更少意味着有更多的计算机(即服务器)空间来存储缓存的页面数据.

虽然存储变得越来越便宜,但没有免费缓存!

缓存听起来是一个简单的概念(即存储数据以供后续使用),但实际上它非常复杂,因为缓存的许多方面取决于服务器配置、可用内存或企业规模等变量以加快某些响应.

例如,大型跨国电信公司可能会使用缓存来降低带宽等基础设施成本,而小型企业网站将使用缓存来提高其页面加载速度.

使缓存复杂化的另一个方面是在缓存中存储相同结果以供后续使用的难度.

作为软件工程师谢益辉在他的博客中表示,"当事情变得不同时,你必须使缓存无效,然后重新进行(大概是耗时的)计算."

因此,这 Phil Karlton 经常引用的俏皮话...

"计算机科学中只有两件难事:缓存失效和命名."

鉴于缓存的复杂性,本文将只关注网络缓存中使用的方法.

Web 缓存是 HTTP 协议的核心设计功能.借助网络缓存,规则和策略的使用控制如何使用不同的缓存类型存储对请求的 HTTP 响应.

这些策略中的缓存控制指令控制谁可以缓存响应、在什么条件下以及多长时间.

如果您需要帮助理解基本的网络缓存术语,参见这篇文章.

不同的缓存类型以及何时使用缓存

当内容从源服务器(即您的内容最初所在的位置)传输到访问者的网络浏览器时,可以使用不同类型的缓存来改进和加快旅程.

有效的缓存对内容提供者和内容消费者都有好处.其中一些好处包括:

  • 降低网络成本.
  • 提高了响应能力.
  • 从相同的硬件中压缩提高的性能.
  • 在网络服务中断期间,最终用户可以使用内容.

以下是一些适用于网络缓存的最佳数据类型:

  • 可以在整个会话中重复使用或在所有用户和请求中重复使用的数据.
  • 静态数据(不是持续或快速变化).
  • 计算或检索成本高昂的数据.

您不想缓存的数据类型包括银行帐户详细信息、登录名、密码等安全信息.

在我们开始讨论使用缓存来加速您的网站的方法之前,让我们先看看不同类型的缓存及其独特的特征:

客户端缓存与服务器端缓存

在最基本的形式中,万维网的工作方式如下:您将内容存储在服务器上并允许用户(即客户端)从他们的网络浏览器访问它.

这意味着缓存可以发生在服务器端(称为"服务器端"缓存)或客户端(称为"客户端"缓存).

客户端缓存

客户端缓存发生在访问者的浏览器上.当有人访问您的网站时,他们的浏览器会创建并存储缓存.

他们下次访问您的网站时,加载速度会更快,因为它会从浏览器缓存中读取信息.

所有现代浏览器都支持客户端缓存.浏览器缓存存储静态内容,如 HTML 和 CSS 文件、图像和 JavaScript.

客户端缓存是高效的,因为它允许浏览器访问文件而无需从服务器重新加载这些文件.

虽然这对于小型网站可能没问题,但如果您有很多并发用户,您将需要考虑使用服务器端缓存.

服务器端缓存

由于客户端缓存发生在访问者的浏览器上,因此您无法控制它.但是您可以控制您的服务器上发生的事情.

例如,您可以控制是否在您的服务器上启用缓存.

假设访问者到达您的网站并且未启用缓存.他们的浏览器会向您的服务器发送对该页面的请求.

然后,您的服务器必须处理此请求,编译页面,然后将其发送回浏览器.所有这些过程都需要时间并消耗服务器资源.

虽然这对于流量较低的小型网站可能很有效,但对于流量较高的大型网站来说,这可能会带来灾难,因为这些网站必须每秒持续处理大量请求并编译大量页面.

这是服务器端缓存有用的地方.

服务器存储每个请求的副本.下次您的服务器必须处理相同的请求时,它会检查缓存,如果那里存储了副本,则从缓存中提供.

如果没有副本,则请求将发送到服务器,在那里进行处理和编译,当信息发送回访问者的浏览器时,副本将存储在缓存中以供后续请求使用.

这减少了服务器负载,允许服务器处理比平时更多的流量,更快地将您的内容交付给用户,并减少他们的等待时间.

服务器端缓存是您(或者很可能是您的网络主机)设置的缓存.

您应该选择哪种缓存取决于您的需要.需要考虑不同的缓存选项和类型.

例如:

  • 移动缓存
  • 用户缓存
  • 操作码缓存
  • 微缓存
  • 边缘缓存(例如 CDN)
  • 对象缓存

让我们简要介绍一下这些不同的缓存类型:

移动缓存

移动缓存的工作方式与常规缓存类似,但它适用于移动应用和设备.

移动应用程序向服务器询问某些内容,并将答案(以及问题以及一些元数据,例如提出问题的时间和/或保留答案的时间)记录在移动用户专用的缓存文件中.

下次移动应用程序想向服务器询问问题时,它会检查服务器是否已经知道答案,如果知道并且答案仍然足够新鲜,那么它会从其缓存中为用户提供答案.

否则,它只会再次询问服务器.如果移动应用程序无法获得答案(例如没有网络连接),它将从其缓存中向用户提供陈旧的答案.

用户缓存

用户缓存为每个登录用户创建一组专用的缓存文件.

当您的网站上有特定于用户的内容时,用户缓存非常有用,例如您提供会员功能或允许不同的用户访问不同的内容或功能.

通过用户缓存,您的网站将为每个登录用户创建一个单独的缓存,并为未登录的访问者创建另一组缓存文件,因此他们将无法访问您的特殊内容.

如果您打算使用用户缓存,请注意某些服务(例如 Cloudflare)可以选择"缓存所有内容".这可能会导致问题,因为缓存不会区分您的登录用户和注销用户.

操作码缓存

OpCode 缓存是 PHP 的性能增强扩展.OpCode 缓存会在每个请求之间缓存已编译的 PHP 代码.

每次执行 PHP 脚本时,它都会查询您的服务器以查看结果是否在缓存中.如果不是,它将脚本的结果存储在缓存中.

为下一个请求内容的用户保存.如果已经缓存,则从缓存中加载.

OpCode 缓存可以提高大中型网站的性能,应该 始终用于生产环境.

微缓存

微缓存是整页缓存的一种变体,但仅在很短的时间内(1-10 秒)缓存动态生成内容的静态副本.

应考虑使用微缓存的唯一实用设置是针对具有快速变化的公共内容(如实时股票价格、突发新闻、体育比分等)的高访问量网站.

如果您的站点在很短的时间内没有足够多的用户使用相同的请求访问您的服务器,那么微缓存就不值得使用.

边缘缓存

边缘缓存(例如 Content Delivery Networks 或 CDN)是指使用缓存服务器将内容存储在更接近最终用户的位置.

假设您的网站托管在洛杉矶的服务器上.如果南非约翰内斯堡的用户访问您的网站,他们的页面请求必须经过 10,000 英里(16,000 公里)才能到达您的网络服务器,然后返回相同的距离才能将页面传送到他们的浏览器.

这不像去月球又回来,但它很远,可能需要很长时间.

在数据传输指令之后开始传输数据之前的延迟称为"延迟".

大多数缓存都存储在同一台服务器上,而 CDN 缓存则将网站的文件缓存到世界各地的分布式数据中心.

当用户下次从千里之外访问您的网站时,他们可以通过距离他们较近的 CDN 服务器访问您网站的文件,从而最大限度地减少延迟.

对象缓存

对象缓存存储数据库查询,以便在需要数据时从缓存中传递数据,而无需查询数据库.

由于服务器不需要生成新结果,因此在您的 WordPress 网站上启用后,它可以缩短您的 PHP 执行时间,减少您的数据库负载,并更快地向访问者提供内容.

由于 WordPress CMS 严重依赖其数据库,因此保持 WordPress 数据库优化并尽可能高效地运行非常重要.

在您的网站上启用后,对象缓存有助于减轻您的数据库负载并更快地交付查询,从而防止您的服务器不堪重负.

WordPress 缓存

WP_Object_Cache

WordPress 使用了内置的对象缓存(称为 WP_Object_Cache) 自 2005 年推出 2.0 版以来.

WordPress 对象缓存自动将数据库中的数据存储在 PHP 内存中,以防止重复查询使数据库过载.

然而,此功能的不足之处在于 WP 对象缓存仅存储来自数据库的数据以进行单次加载.

在每次请求结束时,对象都会被丢弃,并且必须在用户下次请求页面时从头开始重新构建.

虽然这很有用,因为它可以确保在单个页面加载期间不会多次查询 WordPress 数据库,但如果对象缓存可用于通过多个页面加载持久缓存类似的查询请求,则它会更加高效和强大.

这是持久对象缓存解决方案可以提供帮助的地方.

持久对象缓存

持久对象缓存通过允许对象缓存在请求之间持久化,有助于加快数据库查询的交付并减轻服务器的工作负载.

流行的持久对象缓存工具包括MemcachedRedis清漆.

Memcached 和 Redis 不是"缓存",它们是缓存服务器-或使用数据库存储缓存项目的缓存引擎.

本质上,它们是像 MySQL 一样的数据库服务器,旨在持久存储数据并更快地提供内容,因为数据存储在 RAM 中.

每次用户发出请求时,请求都会查询缓存.如果数据库中有匹配项,缓存将提供内容.

内存缓存

如他们的网站所述...

"Memcached 是一种内存键值存储,用于存储来自数据库调用、API 调用或页面渲染结果的任意小块数据(字符串、对象)."

Memcached 于 2003 年首次开发,是一种免费的开源分布式内存对象缓存系统,旨在通过减轻数据库负载来加速动态 Web 应用程序.

本质上,这允许您根据需要重新分配和重新分配内存.

如果您将内存的所有区域视为一个组合实体,那么随着服务器和内存的增加,您的内存池也会增加,从而实现更大的扩展和增加的流量处理.

Redis

Redis 始于 2009 年.它像 Memcached 一样是开源的,可以做 Memcached 能做的所有事情,而且还有更多.

根据其网站,Redis 支持:

"字符串、散列、列表、集合、带有范围查询的排序集合、位图、超级日志、带有半径查询和流的地理空间索引."

Stackoverflow.com 对使用 Memcached 与 Redis 进行了有趣的讨论.

此外,许多缓存插件支持 Memcached 或 Redis 用于缓存存储,用于全页缓存或现有的 wp 对象缓存.

清漆

Varnish 的工作方式与 Memcached 和 Redis 不同.Varnish Cache 是一个 Web 应用程序加速器,也称为缓存 HTTP 反向代理.

它专为内容丰富的动态网站以及 API 设计.

Varnish 允许缓存和加速网页,而无需修改任何代码或后端.

您可以将其安装在任何可以使用 HTTP 的服务器的"前面".当用户在您的网站上提出请求时,它首先会咨询 Varnish 的服务器.

如果请求的结果存在,Varnish 会为请求提供服务.如果它不存在,Varnish 将允许请求传递到站点服务器.

它会在用户下次请求内容时存储结果.

由于请求首先通过 Varnish 的服务器处理,因此可以加快您的加载时间.Varnish 还可以为桌面和移动用户存储单独的缓存——即使它们是相同的 URL.

缓存有什么缺点吗?

正如我们所见,缓存是一个复杂的话题,您可以通过多种方式缓存您的网站或网络应用程序.

您选择的缓存策略和缓存类型会影响您的加载时间,但您需要小心.

如果缓存设置不正确,浏览器将无法验证缓存的内容,页面可能会加载过时的内​​容,这会影响用户体验.

由于缓存实体通常包括由多个用户共享的第三方代理服务器,如果缓存服务器的安全性受到威胁,这可能会影响连接到服务器的所有用户.

有时,您可以对不同类型的缓存进行分层,效果会很好.

其他时候,缓存的复杂性可能会对您的网站造成不良影响,例如向用户提供敏感数据(哎哟!)或将您的后端暴露给访问者(真是太糟糕了!).

使用不同类型的缓存运行基准测试可以帮助您明智地选择应该使用哪种缓存并避免出现问题.

例如,查看我们比较顶级 WordPress 缓存插件的性能的这篇文章.

以最少的现金获得最多的缓存

缓存可以为您的网站带来好处,例如更快的页面加载和减少客户端和服务器请求之间的内容交付时间.

但实施有效缓存策略的复杂性可能是一个真正的缺点.

WPMU DEV 可以帮助您避免经历陡峭且代价高昂的学习曲线.

我们已将缓存 Web 优化构建到我们的许多网站性能增强解决方案中-从我们屡获殊荣的插件到我们全新的极速托管服务.

用蜂鸟粉碎缓存

Hummingbird,我们的网站优化插件,包括完整的缓存功能,如页面、浏览器、RSS 和 Gravatar 缓存,以及完整的 Cloudfare CDN 集成.

Hummingbird WordPress optimization plugin caching screen.
Hummingbird 是一个带有内置缓存和CDN 集成.

安装 Hummingbird 后,您可以完全控制您的网络缓存设置,包括能够从仪表板中清除页面缓存.

Hummingbird clear page cache menu
Hummingbird 为您提供一键式简单选项来清除您的页面缓存.

拥有 WPMU DEV 会员资格,您会自动升级到 Hummingbird Pro 并带有 更多加速功能.

会员资格还可以让您访问我们的整套插件,包括专业版 Smush,我们屡获殊荣的图像压缩插件,它使用 CDN 缓存从全球 45 个位置疯狂快速地提供您的图像.

要了解有关 Hummingbird 缓存功能的更多信息,请查看插件信息页面,访问插件的文档部分,或阅读以下文章:

使用内置缓存母牛托管类固醇

作为 WPMU DEV 成员,您将获得极速托管.您无需执行任何操作即可缓存.

缓存会立即激活、完全配置并为您进行专业管理.您无需安装任何对象缓存插件.

正如我们的首席技术官 Aaron Edwards 所说:

"我们的主机具有内置的 Memcached 对象缓存,大小适合您的计划.不需要安装或配置任何东西."

WPMU DEV 托管针对 WordPress 进行了优化,旨在通过对象和页面缓存、CDN、IPv6 支持和为您的所有托管网站提供完全独立、专用的托管托管服务.

WPMU DEV hosting panel with Flush Object Cache option highlighted.
WPMU DEV 的专属服务为您提供丰富的托管服务不必与其他人分享,并且有机会始终保持缓存.

以下是有关 WPMU DEV 托管和缓存的一些其他有用说明:

  • 对于您托管的每个站点,我们都会在暂存环境中关闭对象缓存,因此您可以在关闭缓存的情况下构建和更改站点,以避免出现任何问题.
  • 作为会员,您还有机会向您的客户转售我们世界一流的最先进的托管服务(即将推出!),因此……您可以获得更多缓存并获得更多的钱!

缓存时间

如果您想亲自体验我们托管服务的下一级缓存优势,现在正是这样做的最佳时机.

我们希望您通过 WPMU DEV 会员试用免费试用我们的托管服务.

最后,如果您已经是 WPMU DEV 成员并且您目前没有在我们这里托管任何网站,请务必迁移一个网站,或者创建一个测试网站,让我们将您全部缓存起来.

>

VPS1352主机测评网(www.vps1352.com)
本文链接:https://www.vps1352.com/7728.html

3

发表回复