服务器缓存、浏览器缓存和站点(页面)缓存:有什么区别?

目录

如果你可能质疑自己:

“我想缓存我的 WordPress 网站。我应该为此使用什么类型的缓存?

答案涉及许多选项,具体取决于您网站的性质以及您希望从中获得什么。

有几种类型的缓存,每种类型都不同于其他类型,在不同情况下很有用。因此,了解它们存储的数据类型以及它们为您提供的控制级别至关重要。

在本文中,我们将详细讨论不同类型的 Web 缓存、它们的工作原理以及它们的区别。

然后,我们将研究可以缓存的各种类型的内容,以及如何以最有效的方式缓存您的 WordPress 网站!

缓存类型有哪些?

您可以使用两种类型的缓存选项:

  1. 服务器端缓存
  2. 客户端缓存

尽管它们缓存您的网站的方式不同,但有一个相似的目标:

使您的网站加载速度极快,而无需再次加载整个站点文件。

让我们仔细看看它们。

什么是服务器端缓存?

服务器端缓存将 Web 文件和数据临时存储在服务器上以备后用,从而有效减少服务器的负载和延迟。

以下是它的工作原理:

1. 当用户访问网站并请求网页时,网站会从服务器检索数据,生成该网页并将其显示给用户。

2. 将响应发送回用户后,服务器会创建网页的副本并将其存储为缓存。

结果如何?

下次用户再次访问该网站时,它不会再次经历整个过程,而是会显示已保存(或缓存)的网页副本——从而使网站加载更快!

Illustration of how server-side caching works
服务器端缓存工作原理图示 – 来源: Medium

什么是客户端缓存?

客户端缓存(通常称为浏览器缓存)将网页的副本临时存储在浏览器的内存(由浏览器创建的文件夹)中。

因此,当用户下次重新访问启用了客户端缓存的网站时,它不会调用服务器以获取数据。相反,它将从位于用户设备上的浏览器缓存文件夹中获取它。

Illustration of how client-side caching works
客户端缓存工作原理图示 – 来源:Medium

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

您选择的缓存类型可显著改善 WordPress 网站的整体用户体验和可用性。因此,最好事先了解哪种类型适合您的网站。

让我们通过一个例子来帮助您解决这个问题:

假设您运行一个在线零售网站。

由于业务性质,您网站上的内容类型是动态的(即,用户会看到推荐的产品、有关废弃购物车的电子邮件或类似/相关产品的广告)。

因此,每当有新的更新时,用户都可以顺利访问您的网站。

如果您的网站加载时间较长,它会敦促用户甚至在内容完全加载之前转移到另一个站点。因此,导致跳出率增加,最重要的是,对登陆您网站的访问者产生负面的第一印象。

现在,考虑上面的例子:

  • 如果您使用服务器端缓存:

当用户请求网页时,网站会从服务器检索数据。但在此之前,它会检查该网页的副本是否已缓存。如果已缓存,则提供网页的缓存副本。

有三种主要方案:

  1. 如果你的网站内容是静态的,它确实需要任何调整。
  2. 如果内容在某个时间范围内是动态的(短期内容),则需要在一定时间后续订缓存或“ajax化”动态内容。
  3. 另一方面,如果您的网站内容在短时间内是动态的,并且是特定于用户的(例如登录体验),则需要绕过缓存。

默认情况下,如果网页被缓存,只要没有绕过它的指令(即,在某些特定情况下将商品添加到购物车),它就会从缓存中提供。

但有一个问题。

它显示缓存版本,就好像网站上的内容是静态的一样!

由于这个原因:

服务器端缓存是具有静态内容和短期缓存的网站的最佳选择,因为它显著减少了服务器上的操作数量,而无需根据用户请求重建整个内容。另一方面,使用 Edge Side Includes (ESI) 或 Ajax (异步 JavaScript 和 XML) 等高级技术仍然可以实现高度动态的服务器缓存。

  • 让我们用客户端缓存来试试:

当您使用客户端缓存时,网站的副本将存储在浏览器的缓存中。因此,当用户请求 Web 页面时,它会显示存储在浏览器中的缓存版本,而不是从服务器请求它。

在此示例中,由于您的网站具有动态功能,因此您的首选方法将使用 JavaScript (JS)。它在浏览器端运行,因此您可以通过在浏览器内运行脚本来依赖它来实时处理您网站的动态需求。

由于这个原因:

对于动态网站,客户端缓存通过减少服务器负载来解决延迟和服务器缓存问题。

现在,如果我们进一步分类,一些类型的 Web 缓存包括:

  • 页面缓存(或站点缓存)
  • 服务器缓存
  • 代理缓存
  • 浏览器缓存

但是,还有一种与上述其他四种类型无关的不同类型的缓存,称为 Object Cache。

对象缓存是一个存储数据库查询结果的过程,以便在用户下次请求时可以轻松访问它们。缓存的对象将立即从缓存中提供,而无需重复查询数据库。

如果您想了解有关对象缓存的更多信息,请查看什么是对象缓存以及如何将其与 WordPress 一起使用。


什么是页面缓存(站点缓存)?

页面缓存(也称为 HTTP 或站点缓存)会在您首次访问网站时将内容临时存储在您的网站上。

因此,下次您访问该网站时,它会从页面缓存中获取存储的数据,以比使用新请求更快地显示静态 Web 内容。

除此之外:

所有数据都存储在服务器的硬盘或内存 (RAM) 中,作为网站所有者,您可以确定文件在页面(站点)缓存中保留多长时间。

如果网站的元素是静态的,则可以将文件的过期日期设置为更长的时间。但是,网站的动态元素具有更短的到期日期。这些简短的到期日期告诉网站何时刷新存储在设备页面缓存中的文件。


什么是浏览器缓存?

浏览器缓存存储用户浏览的特定网页的缓存版本。它内置于您的网络浏览器中 – 使网站加载速度更快,从而为您提供更好的用户体验。

浏览器缓存的工作原理是临时保存网站文件的副本,例如:

  • HTML 页面
  • 多媒体内容和图像
  • CSS 样式表
  • JavaScript 脚本

当用户再次访问您的网站时,他们的浏览器将获取缓存的文件并使用它们来组合您网站的内容,以创建流畅的浏览体验。缓存内容的加载速度更快,因为您的浏览器不必从头开始加载所有内容来显示它们。

通常,浏览器会将其缓存存储有限的时间或直到缓存已满。之后,它会自动清除缓存并在下次访问时显示更新后的网站内容。

一线希望是:

如果浏览器缓存占用太多空间,您还可以通过手动清除浏览数据来删除浏览器缓存——这是此类缓存的主要功能之一!

在 Google Chrome 中,您可以通过单击以下内容来执行此操作:

设置 > 隐私和安全 > 清除浏览数据

How to clear browser data in Google Chrome
如何在 Google Chrome 中清除浏览器数据

当您在清除浏览器数据后访问网站时,它将从头开始加载所有内容。


什么是服务器缓存?

服务器缓存也是一种 Web 缓存类型,最终用户无法控制这种缓存,并且完全由服务器管理。

(注意:主要有四种类型的 Web 服务器——Apache、IIS、Nginx 和 LiteSpeed。

这种类型的缓存主要用于减少服务器负载。

当用户访问网站并向服务器请求网页时,服务器会扫描缓存并立即显示存储的内容。这有助于减少处理时间并更快地返回网页,这对于高流量的网站尤其有益。

服务器缓存可以被视为许多类型缓存的总称。最常见的是:

  • 对象缓存 – 将数据库查询存储在服务器端缓存中,以便快速检索和提示符页面加载,而无需重复查询数据库。
  • 操作码缓存 – 存储预编译的 PHP 代码以加快执行速度。

什么是代理缓存?

代理缓存将内容存储在代理服务器上,允许 Web 服务与更多用户共享这些资源。代理服务器与源服务器协调以缓存网站数据,例如文件、图像和网页。

当用户打开网页时,代理会检查它是否有该网页及其资产的最近副本。

如果存在副本,它会立即向用户显示该网页或资源。另一方面,如果网页旧或缺失,它会从源获取新副本,将其缓存到代理,然后将其交付给用户。

代理更新网页后,它会重置网页的到期日期,以防止其被标记为过时。网页将一直交付到特定时间过去,之后代理服务器将重新检查来源。

除此之外,代理缓存还有一个称为:

内容分发网络 (CDN) 缓存 – 位于不同地理位置的服务器集群。最靠近最终用户的服务器将返回缓存的内容以更快地加载内容。


页面缓存 vs. 浏览器缓存 vs. 服务器缓存 vs. 代理缓存

现在我们已经了解了每种类型的缓存 – 让我们了解它们之间的区别:

页面缓存(或站点缓存):

  • 保存网页、图像、文本等内容。
  • 在首次访问后更快地提供内容。
  • 非常适合具有静态内容的网站。

浏览器缓存:

  • 存储有限的数据类型,如 HTML 页面、CSS 样式表、JavaScript 脚本、图像和其他多媒体文件。
  • 文件更重并且需要时间来加载——因此存储在计算机中。
  • 由用户的浏览器控制。
  • 直接提供网页,而不从服务器进行处理。

服务器缓存:

  • 将内容、代码、查询和类似数据保存在服务器上。
  • 服务器端缓存的类型。
  • 由服务器控制。
  • 由网站所有者管理,无需最终用户的任何输入。
  • 最适合需要减少服务器压力的高流量网站。

代理缓存:

  • 允许 Web 服务与多个用户共享资源
  • 节省带宽并减少加载时间
  • 它可能会在更复杂的场景中有所帮助,例如处理动态或频繁更新的资源(但仅限于使用地理位置定位内容时,其中特定于国家/地区的内容单独存储)。

可以缓存哪些内容?

网站所有者经常缓存各种类型的内容。但是,有些可以缓存,但许多网站所有者不会缓存它们,因为它看起来“有风险”。最后,还有一些根本不应该缓存的。

让我们看看所有这些。

可以缓存但很少缓存的文件包括:

  • 包含动态内容的页面
  • Ajax/REST 请求(如果其缓存已清除)
  • 其他需要更改频率较低的代码

经常缓存和应该缓存的文件包括:

具有静态内容或内容类型对所有用户都保持不变且不经常更改的页面,例如

  • 静态图像
  • 徽标和资产
  • CSS 样式表
  • 可下载文件或其他内容

不应缓存的文件包括:

  • 动态内容,或者更简单地说,使用要显示的条件的个性化数据
  • 任何敏感数据(如信用卡信息)


评论

发表回复

必填项已用 * 标注