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