unUSP Notes关于网络、系统与简单的工程。
← 全部笔记

WEB / Web 工程 / NOTE 02

给缓存一个明确的边界

把页面与静态资源分开考虑,让速度和更新之间的关系更容易理解。

缓存的难点往往不是“要不要打开”,而是如何回答:这份内容可以复用多久,什么时候必须重新确认?

从内容的变化方式开始

页面入口会变化,带版本号的图片或样式文件通常可以保持不变。为它们使用相同的缓存策略,容易让更新和速度互相牵制。先按内容的变化方式分类,再决定响应头。

两个容易混淆的指令

no-cache 允许保存响应,但复用之前需要验证;no-store 则要求缓存不要存储响应。名字相近,表达的边界却不同。涉及个人信息的响应,还需要认真考虑私有缓存与共享缓存之间的区别。

# 示例:页面复用前先验证
Cache-Control: no-cache

# 示例:带内容指纹且永不覆盖的静态文件
Cache-Control: public, max-age=31536000, immutable

文件名也是发布流程的一部分

长期缓存适合内容变化时同步更换 URL 的资源。例如样式文件修改后生成新的文件名,再由新的页面引用它。若始终覆盖同一个 URL,客户端就可能继续使用缓存里的旧内容。

验证时同时检查首次请求与再次请求。浏览器开发者工具里的“禁用缓存”适合排查,却不代表普通访问者实际经历的流程。

继续阅读:MDN · HTTP caching

— END OF NOTE —
继续阅读其他手记 →