一图看懂HTTP缓存控制/浏览器缓存控制
这篇从一张广为流传但部分有误的HTTP缓存控制流程图说起,系统梳理了浏览器缓存的两大核心机制:强缓存与协商缓存。 作者清晰对比了两者的关键差异。强缓存(状态码200)在资源有效期内直接从本地读取,不发起网络请求,主要依赖`Cache-Control`(相对时间)和`Expires`(绝对时间)头部控制,前者优先级更高。而协商缓存(状态码304)则需服务器验证资源是否更新,核心涉及`ETag/If-None-Match`与`Last-Modified/If-Modify-Since`两组字段的配合,服务器会优先校验ETag。 文章还深入解答了常见实践问题:例如,为何需要ETag(解决Last-Modified在秒级修改和内容不变时更新时间等情况下的局限性),以及在未设置任何缓存策略时,浏览器采用的启发式算法。最终,作者提供了一张更正后的流程图,将复杂的缓存判断逻辑可视化,帮助开发者理清`Cache-Control`、`ETag`、`Last-Modified`等字段在决策树中的具体位置与作用,避免在实际开发中配置出错。