主题
HTTP 缓存
私有缓存与共享缓存
私有缓存面向单个用户,共享缓存可为多个用户复用响应。Cache-Control: private 限制共享缓存存储,Vary 指明选取缓存响应时需匹配的请求字段。
带 Authorization 的请求存在额外的共享缓存限制。个性化响应应明确指定缓存策略。
新鲜度、过期与 Cache-Control
响应当前年龄小于新鲜寿命时通常可直接复用。max-age 指定新鲜寿命,s-maxage 针对共享缓存。过期响应通常需验证后复用。
no-cache 允许存储但要求验证,no-store 禁止按该响应存储。过期不意味着立即从缓存删除。
ETag、Last-Modified 与条件请求
ETag 是表示的验证器,Last-Modified 是最后修改时间。缓存验证常用 If-None-Match 或 If-Modified-Since,服务器在两者同时出现时优先处理前者。
时间验证有精度限制。弱 ETag 可用于缓存验证,If-Match 使用强比较以支持防止并发覆盖等场景。
304 响应与缓存复用
304 是条件 GET 或 HEAD 的可能结果。它没有消息体,缓存可用其中的字段更新已有响应的元数据。
规范参考:HTTP 缓存规范 RFC 9111
