将 CloudFront 文件的 TTL 设置为 1 年

Mot*_*ika 2 amazon-cloudfront amazon-web-services

我知道我们可以将 expires 标头设置为 Amazon S3,但是如何为 cloudfront 文件设置它?我读过我们可以将 TTL 从 24 小时设置为 1 小时,但我想将其设置为 1 年。

Ste*_*pel 5

这是通过常规 HTTP 缓存控制机制(请参阅RFC 2616)处理的,如Amazon CloudFront Object Expiration 中所述,特别是:

默认情况下,每个对象会在 24 小时后自动过期。要指定不同的到期时间,请将您的源配置为向每个对象添加 Cache-Control max-age 指令或 Expires 标头字段的值:

  • Cache-Control max-age指令允许您指定在 CloudFront 再次从源服务器获取对象之前希望对象在缓存中保留多长时间(以秒为单位)。CloudFront 支持的最短过期时间对于 Web 分配是 0 秒,对于 RTMP 分配是 3600 秒。最大值在 2038 年。按以下格式指定值:

    Cache-Control: max-age=seconds

    例如,以下指令告诉 CloudFront 将关联对象在缓存中保留 3600 秒(一小时):

    Cache-Control: max-age=3600

    如果您希望对象在 CloudFront 边缘缓存中的停留时间与它们在浏览器缓存中的停留时间不同,则可以一起使用Cache-Control max-ageCache-Control s-maxage指令。有关更多信息,请参阅指定 CloudFront 为 Web 分配缓存对象的最短时间

  • Expires报头字段可让您使用指定的格式指定过期日期和时间2616,超文本传输协议- HTTP / 1.1第3.3.1节,全日期,例如:

    Sat, 30 Jun 2012 23:59:59 GMT

    [...]

我们建议您使用 Cache-Control max-age 指令而不是 Expires 标头字段来控制对象缓存。如果您同时为 Cache-Control max-age 和 Expires 指定值,则 CloudFront 仅使用 max-age 的值。[强调我的]

您可能还想查看指定 CloudFront 缓存 Web 分配的对象的最短时间中的表格以了解最小 TTL = 0(默认)的特性(请参阅我对CloudFront 中的 TTL 0 是什么有用的回答?有关此功能的更详细说明)。