📜  HTTP 标头 |缓存控制(1)

📅  最后修改于: 2023-12-03 15:31:20.067000             🧑  作者: Mango

HTTP 标头 | 缓存控制

HTTP 缓存控制是网站优化中的一个重要方面。它允许开发人员控制浏览器如何缓存网页,并通过减少重复请求来改善性能和减轻服务器负担。本文将介绍 HTTP 缓存控制的基础知识。

缓存控制 HTTP 标头

使用 Cache-Control 和 Expires 标头让浏览器缓存资源是一种常见方法,它们指示浏览器在请求之间持久存储资源的时间。

Cache-Control

Cache-Control 是用于控制缓存的 HTTP 标头之一。它指定浏览器应如何缓存响应,并在何时必须重新请求新资源。

例如,Cache-Control 标头可以包含以下指令:

  • public:允许客户端、代理和 CDN 缓存响应。该选项很有用,因为它可以将静态资源缓存在 CDN 上。
  • private:仅允许客户端缓存响应(但不允许代理或 CDN 缓存)。这个选项通常用于包含个人信息或敏感数据的页面或 API。
  • max-age:设置响应应缓存的时间(以秒为单位)。此选项允许开发人员指定客户端可以在这段时间内重复使用相同的响应,而无需向服务器发出新的请求。

示例代码:

Cache-Control: public, max-age=3600

这里,我们允许 CDN 缓存响应,并将缓存时间设置为 1 小时。

Expires

Expires 标头是另一个用于控制缓存的 HTTP 标头。它允许开发人员指定必须在过期之后重新请求新资源。

和 Cache-Control 标头一样,Expires 标头可以指定一个时间戳,以指示资源到期的日期。

示例代码:

Expires: Fri, 01 Jan 2021 00:00:00 GMT

这里,我们指定资源将在 2021 年 1 月 1 日到期。

ETag

ETag 是另一个用于控制缓存的 HTTP 标头。它允许开发人员指定一个唯一的标识符,以便浏览器可以根据资源的内容是否更改来验证缓存是否仍有效。

当浏览器发出请求时,它将发送一个包含 ETag 值的 If-None-Match 标头。如果浏览器已经有一个资源的缓存副本,并且 ETag 值匹配,那么服务器将返回一个 304 Not Modified 状态码,告诉浏览器可以使用缓存资源。

示例代码:

ETag: "12345"

这里,我们指定资源的唯一标识符为 "12345"。

总结

HTTP 标头是控制缓存的重要工具。Cache-Control 和 Expires 标头用于确定资源是否应被缓存以及在何时重新请求新资源。ETag 标头可用于验证资源是否已更改,从而减少网络流量并提高性能。