如何阻止 Cloudfront 独立于 GET 请求缓存 HEAD 请求?

How do I stop Cloudfront from caching a HEAD request independently of the GET request?

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

一个正常的例子看起来像这样...

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

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

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

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

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

有什么方法可以阻止 Cloudfront 返回对实际未缓存内容的 HEAD 请求的缓存命中?

禁用缓存 headers 在您的来源的 HEAD 响应将阻止 Cloudfront 缓存 HEAD 响应本身。因此,如果您向 CDN 发出 HEAD 请求,它会在缓存中查找匹配的 object 和 return 缓存命中(如果存在)。如果内容丢失,它会将 HEAD 请求转发到您的来源,但不会缓存响应。