HTTP 缓存机制
HTTP 缓存存储与请求关联的响应,并将存储的响应复用于后续请求。
分类
私有缓存 & 公有缓存
HTTP Caching 标准中,有两种不同类型的缓存:私有缓存和共享缓存。 私有缓存是绑定至特定客户端的缓存——通常是浏览器缓存,可以保证该响应不与其他客户端共享,因此可以存储该用户的个性化响应。必须指定Cache-Control: private 。 单独的 cookie 并不会使响应成为私有的,并且如果响应具有Authorization 标头,则不能将其存储在私有缓存中。 共享缓存位于客户端和服务端之间,可以进一步分为代理缓存和托管缓存。
-
代理缓存 无需开发人员管理
Cache-Control: no-store, no-cache, max-age=0, must-revalidate, proxy-revalidate
-
托管缓存
Cache-Control: no-store
Cache-Control 是一个 HTTP 缓存标头,包含一组参数以指定何时、如何缓存及缓存多长时间,用于定义客户端请求和服务器响应中浏览器的缓存策略。
强制重新验证
// 兼容性更高 Cache-Control: max-age=0, must-revalidate // HTTP1.1 后应使用 ?? Cache-Control: no-cache
不使用缓存
Cache-Control: no-store 不建议随意授予 no-store,因为你失去了 HTTP 和浏览器所拥有的许多优势,包括浏览器的后退/前进缓存。
避免重新验证
Cache-Control: max-age=31536000, immutable
immutable 明确指示不需要重新验证,因为内容永远不会改变。
强缓存 & 协商缓存
no-store 是缓存有效性的定义,并不影响缓存的存放位置。
缓存的存储位置:https://blog.csdn.net/zhaowanwan/article/details/111181013
缓存主要资源很困难,因为仅使用 HTTP 缓存规范中的标准指令,在服务器上更新内容时无法主动删除缓存内容。但是,可以通过部署托管缓存(例如 CDN 或 service worker)来实现。 例如,允许通过 API 或仪表板操作清除缓存的 CDN 将通过存储主要资源并仅在服务器上发生更新时显式清除相关缓存来实现更积极的缓存策略。 如果 service worker 可以在服务器上发生更新时删除缓存 API 中的内容,它也可以这样做。
|