【问题标题】:How do I stop Cloudfront from caching a HEAD request independently of the GET request?如何阻止 Cloudfront 独立于 GET 请求缓存 HEAD 请求?
【发布时间】:2019-01-22 12:57:12
【问题描述】:

Cloudfront 正在为没有相应缓存内容的 HEAD 响应返回缓存命中。

一个普通的例子是这样的......

  1. GET /path(未命中)
  2. GET /path(命中)
  3. 头部/路径(命中)

这很好,符合我们的预期。这意味着我们可以估计用户是否可能会命中缓存,或者是否必须等待源生成内容。

不过,我们也在观察这一点。

  1. HEAD /path2(未命中)
  2. HEAD /path2(命中)
  3. GET /path2(未命中)

这是一个问题,因为我们无法区分自己缓存的 HEAD 响应和链接到相应 GET 响应的 HEAD 响应。

有没有办法阻止 Cloudfront 对实际未缓存的内容的 HEAD 请求返回缓存命中?

【问题讨论】:

  • “这意味着我们可以通过发出 HEAD 请求来检查对象的缓存状态。” 不完全是,因为任何给定对象都没有单一的缓存状态—— CloudFront 缓存不是一个地方的单一事物。您正在检查的内容可能更准确地描述为对象的缓存状态,供在地理位置上靠近您或靠近与您对向相同区域边缘的另一个全球边缘的查看者。
  • 是的。谢谢。你说的对。我已经更新了问题以更好地反映这一点。

标签: amazon-web-services http amazon-cloudfront


【解决方案1】:

在您的源中禁用 HEAD 响应的缓存标头将阻止 Cloudfront 缓存 HEAD 响应本身。因此,如果您向 CDN 发出 HEAD 请求,它将在缓存中查找匹配的对象,如果存在则返回缓存命中。如果内容丢失,它会将 HEAD 请求转发到您的源,但不会缓存响应。

【讨论】:

    猜你喜欢
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 1970-01-01
    • 2018-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多