【问题标题】:How do you set up permanent caching for cloudfront?您如何为云端设置永久缓存?
【发布时间】:2016-05-30 23:38:30
【问题描述】:

我已通读文档并尝试设置永久云端缓存。这个想法是,一旦您下载了图像,您就不需要再次下载它。我正在查看我的网络选项卡,但我认为不是。谁能告诉我这个文件是否有正确的缓存设置?

https://d2t4fc8ff77neh.cloudfront.net/cardSrcMedia/1abqkohet_plain_red_heart_graphic_with_a_drop_shadow_0071-0910-0216-0922_SMU.jpg

我的标题:

var headers = {
  'Content-Length': options.data.length,
  'Vary': 'Accept-Encoding',
  'Expires': 1000 * 60 * 60 * 24 * 365 * 5,
  'x-amz-acl': 'public-read',
  'Content-Type': options.type
}

【问题讨论】:

    标签: http-headers amazon-cloudfront


    【解决方案1】:

    看起来您的图像正在被 CloudFront 缓存,但您的 expires 标头值无效。

    来自 HTTP 1.1 规范 (https://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html):

    格式是由 HTTP-date 定义的绝对日期和时间 第 3.3.1 节;它必须是 RFC 1123 日期格式

    HTTP/1.1 客户端和缓存必须处理其他无效的日期格式, 特别是包括值“0”,就像过去一样(即“已经 过期”)。

    要将响应标记为“永不过期”,源服务器会发送一个
    自响应之日起约一年到期
    发送。 HTTP/1.1 服务器不应发送多个过期日期
    未来一年。

    使用 Cache-control 标头可能会更好,因为它取代了 Expires 标头。这样的事情应该会产生相同的效果:

    Cache-Control: max-age=31536000
    

    【讨论】:

    • CloudFront docs 也支持使用Cache-Control 代替Expires 的位置。此外,这个问题似乎更多地是关于浏览器缓存,但请注意,CloudFront 不保证它会在指定的时间内缓存对象,只是它不会缓存它们更长...覆盖herehere
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 1970-01-01
    • 2017-11-19
    • 2015-10-10
    • 1970-01-01
    相关资源
    最近更新 更多