国外优秀的网站设计,小程序制作流程微信,企业年金怎么查询,alexa排名分析Cache-Control 是一个 HTTP/1.1 协议中的头部字段#xff0c;用于指定请求和响应遵循的缓存机制。通过这个头部#xff0c;服务器可以告诉客户端响应可以被缓存多长时间#xff0c;以及在什么条件下可以被缓存和重新使用。以下是一些常见的 Cache-Control 指令#xff1a; …Cache-Control 是一个 HTTP/1.1 协议中的头部字段用于指定请求和响应遵循的缓存机制。通过这个头部服务器可以告诉客户端响应可以被缓存多长时间以及在什么条件下可以被缓存和重新使用。以下是一些常见的 Cache-Control 指令
基本指令 no-cache 表示响应不应该被缓存除非得到客户端的确认。这确保了客户端总是通过服务器验证缓存的有效性。使用 no-cache 指令表示客户端可以缓存内容但在使用之前必须向原始服务器验证缓存的有效性。这意味着每次客户端需要使用缓存时它都会发送一个请求到服务器以确认缓存是否仍然是最新的。服务器可以通过返回304状态码Not Modified来回应告诉客户端缓存版本仍然是最新的客户端可以使用缓存数据。如果资源已经被修改服务器会发送新的响应数据。no-cache 适用于需要确保用户总是获取到最新数据的场景但同时又希望建立缓存以优化性能。 no-store 表示响应不应该在任何情况下被缓存这适用于敏感信息确保信息不会在本地存储。 与no-cache相比no-store 指令更加严格它告诉客户端和任何中间缓存如代理服务器不应该存储任何版本的响应。也就是说无论请求条件如何每次用户请求时都需要从服务器获取完全的新响应数据。no-store 通常用于非常敏感的数据如个人隐私信息或者银行交易页面这些页面不应该被存储在任何地方以避免安全风险。 public 表示响应可以被任何缓存即使是通常是私有的如浏览器缓存缓存。 private 指的是响应是私有的例如它只适用于单个用户只能被用户的浏览器缓存。 max-age秒 指定一个时间段在这段时间内响应被认为是新鲜的。此时间从响应生成开始计算。
可选指令 s-maxage秒 类似于 max-age但这是专门为共享缓存如 CDN设置的。 must-revalidate 当缓存过期时缓存必须向服务器验证缓存响应的有效性即使用户操作是离线的。 proxy-revalidate 与 must-revalidate 类似但它只适用于共享缓存。 immutable 表示响应体不会随时间而改变缓存可以无限期地复用它不需要进行重新验证。 no-transform 不允许缓存修改资源内容比如不允许压缩图片。
过期指令 stale-while-revalidate秒 表示客户端愿意接受超出最大新鲜期的响应在后台静默地更新缓存内容。 stale-if-error秒 如果服务器发生错误客户端愿意接受一个过时的响应。
示例
一个响应头可能包含如下的 Cache-Control 指令
Cache-Control: public, max-age3600
这意味着此响应可以被任何缓存缓存并且是新鲜的在接下来的3600秒1小时内。
一个请求头可能包含如下的 Cache-Control 指令
Cache-Control: no-cache
这意味着客户端要求接收到的每个响应都必须直接来自服务器或者至少在返回给客户端之前得到服务器的验证。