HTTP缓存过期

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.0,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

HTTP缓存过期

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

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

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

提示

您还可以使用注释为过期和验证定义HTTP缓存头。看到FrameworkExtraBundle文欧宝体育电话档

到期时使用cache - control

大多数情况下,您将使用cache - control头。回想一下cache - controlHeader用于指定许多不同的缓存指令:

1 2 3
//设置响应后的秒数//应该不再被认为是新鲜的响应->setSharedMaxAge (600);

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

1
Cache-Control: public, s-maxage=600

到期时使用到期

替代方案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服务器不应该发送到期日期超过一年以后。”

此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。