Skip to content

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

基于 MIT 许可发布