Cache-Control 标头是一个 HTTP 标头字段,允许服务器为客户端(如 Web 浏览器)和中间缓存(如代理服务器)指定缓存指令。它控制客户端和缓存应如何存储和重用对后续请求的响应。它还提供了一种控制缓存各方面的方式,包括缓存生命周期、缓存验证和缓存重新验证。
了解更多:Mozilla Cache-Control 文档 💡
如果 传递多个指令,每个指令以 逗号(,)分隔。如果指令 带参数,参数跟在指令后,以 等号(=)分隔,例如 max-age=86400。
Cache-Control 标头可以在 .htaccess 文件或 PHP 代码 中自定义。
指令类型
指令可分为 四组:可缓存性、过期、重新验证和其他。
可缓存性
指 资源是否应进入缓存,以下指令表示资源的可缓存性:
public— 表示任何缓存都可以存储响应,即使响应通常不可缓存或仅在私有缓存中可缓存private— 表示响应消息面向单个用户(例如浏览器缓存),共享缓存(CDN 或企业代理)不得存储no-store— 表示任何缓存(即客户端或代理缓存)不得存储即时请求或响应的任何部分
过期
指 资源应在缓存中保留多长时间,以下指令影响资源在缓存中的保留时长:
max-age=seconds— 表示当响应的年龄大于指定秒数时即为过期- 年龄定义为资源从源服务器提供以来的秒数
seconds参数为不带引号的整数s-maxage=seconds— 表示在共享缓存中,此指令指定的最大年龄会覆盖max-age指令或Expires标头字段指定的最大年龄s-maxage指令也暗示 proxy-revalidate 响应指令的语义- 浏览器忽略
s-maxage no-cache— 表示在没有在源服务器上成功验证的情况下,响应不能用于满足后续请求;这允许源服务器阻止缓存使用源来满足请求,即使是配置了发送过期响应的缓存
确保 HTTP Expires 标头在源服务器上设置为 格林威治标准时间(GMT),如 RFC 2616 所规定 💡
重新验证
指 缓存应何时以及如何与服务器重新验证缓存响应,以确保其仍然有效和最新。
此类指令的一个例子是 must-revalidate 指令。当包含在 Cache-Control 标头中时,它指示缓存对每个后续请求都与服务器重新验证缓存响应,即使根据 max-age 指令指定的过期时间该响应被认为是新鲜的。这确保缓存只提供最新的响应,并有助于维护数据完整性。
其他
此组包括控制缓存各方面的附加指令,例如强制缓存重新验证响应、防止在缓存中存储响应,或要求使用条件请求进行验证。
来源:Hostinger 官方帮助文档