Skip to content

referer: https://github.com/chenqf/frontEndBlog/issues/18

缓存

对之前请求过的文件进行缓存,以便于下次访问时重复使用,提高访问速度,降低服务器压力

常见的缓存响应头

响应头字段说明
Cache-Controlmax-age=300缓存的有效时间为 300 秒
DateFri, 09 May 2025 05:23:09 GMT响应生成的时间
ETag"680d9f3c-7494"资源的唯一标识符
Last-ModifiedSun, 27 Apr 2025 03:06:36 GMT资源最后修改时间

强缓存 (Strong Cache)

强缓存机制通过响应头的两个重要字段来控制缓存的失效规则:Expires 和 Cache-Control。

1. Expires

HTTP 1.0 时代的产物
由于存在以下问题,现代浏览器已较少使用:

  • 大多数浏览器默认使用 HTTP 1.1
  • 服务器时间与客户端时间可能存在偏差,导致缓存控制不准确

因此,HTTP 1.1 引入了 Cache-Control 来替代它。

2. Cache-Control

HTTP 1.1 的缓存控制机制
提供了多种缓存策略选项:

指令说明使用场景
private仅允许客户端缓存默认值,适用于用户个人数据
public允许所有中间节点缓存适用于公共资源
max-age=xxx缓存内容在 xxx 秒后失效精确控制缓存时间
no-cache强制使用协商缓存验证需要验证资源是否变化
no-store完全禁止缓存敏感数据,实时性要求高

协商缓存 (Negotiation Cache)

协商缓存是一种服务器与客户端合作的缓存机制,需要双方进行缓存有效性的确认。

特点:

  • 当缓存生效时返回 304 状态码
  • 显著减少响应体积(仅返回 header)
  • 大幅降低请求处理时间
  • 服务器通过状态码告知客户端可继续使用本地缓存

💡 性能提示:协商缓存虽然需要与服务器通信,但通过只传输 header 信息,仍然可以大幅提升访问效率。