HTTP缓存过期

编辑本页

HTTP缓存过期

失效模式是两种缓存模型中最有效和最直接的,应该尽可能使用。当响应被缓存到过期时,缓存将直接返回该响应,直到缓存的响应过期为止。

过期模型可以使用两个几乎相同的HTTP头中的一个来完成:到期cache - control

您可以在同一个文件中同时使用验证和过期响应.由于过期胜过验证,您可以从两个世界的优点中受益。换句话说,通过使用过期和验证,您可以指示缓存提供缓存的内容,同时以一定的时间间隔(过期)进行检查,以验证内容是否仍然有效。

提示

您还可以使用注释为过期和验证定义HTTP缓存头。看到FrameworkExtraBundle文欧宝官网下载app档

到期时使用cache - control

大多数情况下,您将使用cache - control头文件,用于指定许多不同的缓存指令:

1 2 3 4
//设置响应后的秒数//共享缓存不再认为是新鲜的响应->setPublic ();响应->setMaxAge (600);

cache - controlHeader将采用以下格式(它可能有额外的指令):

1
Cache-Control: public, max-age=600

请注意

使用setSharedMaxAge ()方法并不等同于同时使用两者setPublic ()而且setMaxAge ()方法。根据提供陈旧的回复RFC 7234的章节s-maxage设置(由setSharedMaxAge ()方法)禁止缓存在中使用过期响应stale-if-error场景。这就是为什么建议两者都使用公共而且信息指令。

到期时使用到期

替代方案cache - control标题是到期.两者都没有优劣之分。

根据HTTP规范,“the到期报头字段给出的日期/时间之后,响应被认为是陈旧的。的到期属性可以设置setExpires ()响应方法。它需要DateTimeInstance作为参数:

1 2 3 4
日期DateTime ();日期->修改(+ 600秒的);响应->setExpires (日期);

结果的HTTP头看起来像这样:

1
截止日期:2011年3月1日星期四16:00:00 GMT

请注意

setExpires ()方法自动将日期转换为规范要求的GMT时区。

注意,在1.1之前的HTTP版本中,源服务器不需要发送日期头。因此,缓存(例如浏览器)可能需要依赖本地时钟来计算到期报头使寿命计算容易受到时钟倾斜。另一个限制到期该规范声明“HTTP/1.1服务器不应该发送到期日期超过一年以后。”

请注意

根据计算新鲜度寿命RFC 7234的章节到期属性时,将忽略头值s-maxage信息环保署指示cache - control头被定义。

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。
ob娱乐下载Symfony 5.4支持通过私人Packagist