虽然网站缓存的技术和具体细节可能很复杂,但其基本概念却非常简单。这是您的浏览器/服务器将文件副本存储在临时存储位置以便更轻松、更快速地访问的过程。
例如,您的浏览器可能会保存 HTML 文件、图像和 JavaScript 代码,以帮助您的网站加载速度更快。网站保存可重复使用的资源,以加快后续请求并从服务器获取。因此,从技术上讲,它是您存储或服务器存储中的一个临时文件,用于更轻松、更快速地浏览互联网。缓存允许您更有效地重新加载以前检索到的数据。
当您点击一个网站时,您的浏览器必须下载大量数据才能显示该网站。下载时间可能会导致页面加载延迟,这通常是一种缓慢的加载体验。服务器上的缓存文件使您可以在发出访问请求后立即访问网页。由于缓存,下次访问网站会快很多。
- Web 缓存的优点
- 增强的 Web 响应能力
- 不间断的内容访问
- 降低网络成本
- 可预测的结果
- 网站缓存的类型
- 代理缓存(服务器缓存)
- 浏览器缓存
- 其他缓存机制
- 数据库缓存
- 操作码缓存
- CDN缓存
- 缓存清除
Web 缓存的优点
增强的 Web 响应能力
正如我们之前提到的,网络缓存通过减少服务器往返次数来帮助您的网络更快地响应。通过将缓存文件存储在靠近用户的位置,从网站检索信息变得更加容易和快捷。
不间断的内容访问
服务器有时达不到预期。但是,如果该网站之前下载过缓存文件,您将能够不间断地访问这些信息。
降低网络成本
如果您可以实施积极的缓存,您将需要更少的服务器空间。这样,缓存文件在内容路径中接近用户。因此,服务器不会因内容访问请求而负担过重,从而降低成本。
可预测的结果
对于在特定时间(例如黑色星期五销售)处理应用程序使用高峰的网站来说,这可能具有挑战性。如果不做任何准备,网站就会遭受延迟,这会使它们的整体性能变得不可预测。但是,您可以通过执行良好的内存缓存策略来缓解这些问题。
网站缓存的类型
代理缓存(服务器缓存)
服务器缓存提高了所有访问者的网站性能,而不仅仅是重复访问者。
它是这样工作的:
当浏览器请求网页时,服务器必须处理该请求。当第一个请求(来自任何用户)得到满足时,服务器会“缓存”它并在下一次更快地向任何人提供相同的数据。代理缓存最显着的优点之一是它允许数百万用户同时访问网站而不会导致网站崩溃。
在托管服务器之上,有一个 DNS(域名系统)缓存系统。DNS 通常被称为 Internet 的电话簿。它将 10web.io 等网址连接到托管服务器的 IP 地址,如 28.56.8.252。
该系统由一系列称为名称服务器的服务器运行,这些服务器跟踪这些地址。缓存名称服务器(也称为 DNS 缓存)会在管理员指定的时间内保留有关 DNS 查询的信息。
TTL(生存时间)是这个时期的术语,在更改域名或托管服务提供商时需要。
大多数托管托管服务提供商都预装了代理服务器缓存。
虽然有些为您提供了从仪表板启用/禁用它的选项,但其他人认为您应该保持启用状态并且不提供禁用它的选项。最流行的代理服务器缓存选项包括Varn i sh和 Nginx。清漆据说是业内最好的选择。 如果您所在的托管公司在其服务器上没有代理缓存,您可以请求安装它。但是,共享主机无法做到这一点,您只能在 VPS 或专用服务器上提出请求。
浏览器缓存
当您访问一个网站时,您不仅需要检索页面的内容;您还需要大量资源,如 Javascript 文件、样式表、字体等,除了页面内容之外,您的浏览器还会下载这些资源。
浏览器缓存允许您的浏览器将这些文件存储一段时间,这样就不需要在您每次访问该站点时都检索它们。当用户访问您的网站时,浏览器会保存一些数据以供稍后显示,而无需再次联系您的服务器。结果,浏览器缓存加速了您网站的回访者。
您可能想知道更新网站时缓存会发生什么。访问者会继续看到以前的版本吗?答案是否定的,如果你做对了就不会。
大多数网站使用 ETag 和 Expire Tag 来避免这种情况。第一种方法,ETag,是一种令牌,用于将网站的缓存版本与实际服务器上的版本进行比较。当它们不同时,浏览器会请求最新的网站版本。
第二个是 Expire Tag,指定缓存版本何时从浏览器中删除。此标签由网站所有者/管理员管理,他们选择更新之间的平均时间。用户也可以手动清除缓存以避免出现问题。
如今,浏览器缓存由托管公司预先设置,如果没有,如果您使用的是 WordPress,则始终可以使用第三方插件安装它们。
如果您想在没有插件的情况下启用它,只需转到您的 .htaccess 文件并粘贴以下代码:
# BEGIN 过期标头
<IfModule mod_expires.c>
# 打开模块。
ExpiresActive 于
# 设置默认到期时间。
ExpiresDefault “访问加 2 天”
ExpiresByType image/jpg “访问加 1 个月”
ExpiresByType image/svg+xml “访问 1 个月”
ExpiresByType image/gif “访问加 1 个月”
ExpiresByType image/jpeg “访问加 1 个月”
ExpiresByType image/png “访问加 1 个月”
ExpiresByType text/css “访问加 1 个月”
ExpiresByType text/javascript “访问加 1 个月”
ExpiresByType 应用程序/javascript “访问加 1 个月”
ExpiresByType 应用程序/x-shockwave-flash “访问加 1 个月”
ExpiresByType 图像/ico “访问加 1 个月”
ExpiresByType 图像/x 图标“访问加 1 个月”
ExpiresByType text/html “访问加 600 秒”
</IfModule>
# END 过期标头
其他缓存机制
数据库缓存
数据库缓存是一种缓存数据库结果以便下次更快地返回它们的系统。
有两种类型的数据库缓存:
内部缓存:根据使用模式,它会准备好它认为您可能需要的东西。你在这件事上没有发言权。
查询缓存:如果您多次进行查询(例如,针对用户配置文件),结果将被缓存并从 RAM 而不是磁盘返回。
当分配的 RAM 耗尽以容纳新查询时,最旧的查询将被删除。当基础数据在表或行/文档级别发生变化时,缓存将被清除,具体取决于数据库。
操作码缓存
一种操作码缓存是 OPcache。这种类型的缓存将 PHP 代码转换为您的服务器可以理解的操作码。当 PHP 文件第一次加载到网页上时会发生这种情况。然后将信息保存到服务器的内存中,以便在后续页面访问时更快地加载。OPcache、APC、Xcache等字节码缓存引擎都是在PHP文件第一次执行时完成这个过程,不需要再次执行。
执行 PHP 脚本时,将检查服务器上的缓存内存以查看脚本是否已被缓存。如果没有,则解析代码,这意味着它已被分析。然后脚本被编译成操作码,允许服务器读取文件。之后,操作码保存在服务器的内存中。换句话说,它缓存在您的服务器上。当访问者使用 PHP 脚本加载页面时,缓存代码的执行和加载速度会快得多。另一方面,如果脚本被加载到页面上并且检查缓存中的操作码并找到它,它会被快速加载。
CDN缓存
CDN (内容分发网络)由位于世界各地的多台服务器组成。它们将最常请求的文件缓存在网页上,当用户输入查询时,最近的服务器会响应准备好显示的内容。服务器足够智能,可以识别设备类型、cookie 设置和其他有关用户的信息,从而只缓存和显示所需的页面。CDN 还可以提供唯一且未缓存的动态内容。
最好和最受欢迎的 CDN 服务是 Cloudflare。最好的部分是 Cloudflare 是免费的。其他一些最好的 CDN 选项是 StackPath 和 Key CDN。所有的选项都可以很容易地与 WordPress 上的一个插件集成。
缓存清除
缓存机制生成页面的静态 HTML 副本。查看页面时,它会保存一个静态 HTML 副本并将该静态 HTML 副本显示给您的用户。因此,它不必每次都从服务器检索信息。加载页面时,它可以节省时间和资源。这可以解释为什么当您更改某个帖子时,您不会立即看到更改;这意味着您仍在查看旧的“副本”,而不是即时从数据库中检索到的实时版本。如果清除缓存,下次访问您的页面时,它将使用来自服务器的信息生成页面(原始方法)。然后将重新复制该页面以创建一个新的静态 HTML 副本。这种清除缓存的过程通常称为缓存清除。每次更改网站时清除缓存是一个好习惯。使用 WordPress,只需使用插件即可在每次网站更新(例如,发布或更新帖子)时自动触发此清除。