笔记 / 生长中的笔记
HTTP 缓存机制:强缓存与协商缓存
整理 Cache-Control、ETag 与 Last-Modified 的分工,以及浏览器重新验证资源的过程。
HTTP 缓存的核心目标,是在“内容足够新”的前提下减少传输与等待。
强缓存
浏览器可以根据 Cache-Control 判断本地副本是否仍然有效。如果未过期,通常无需向服务器发起请求。
Cache-Control: public, max-age=3600
max-age 表示响应从生成开始可以被认为新鲜的秒数。对于带内容哈希的静态资源,可以设置较长时间并配合 immutable。
协商缓存
当本地副本过期,浏览器可以携带验证信息询问服务器:
If-None-Match对应服务器此前返回的ETag;If-Modified-Since对应Last-Modified。
资源未变化时,服务器返回 304 Not Modified,不再传输完整正文。
当前理解
强缓存解决“要不要发请求”,协商缓存解决“发出请求后要不要重新传正文”。实际策略需要结合资源是否带哈希、更新频率与共享缓存来决定。