我可以禁止在AWS Cloudfront上发布Etag标头吗?

Zha*_*ami 5 http-headers amazon-cloudfront

我使用亚马逊的Cloudfront CDN作为静态资产.可以为每个GET请求发出Etag问题.我已经使用特定的Cache-Control信息为我的所有资产设置了元数据,这(据我所知)使得Etag变得多余.我在WebPageTest.org上测试了我的网站的负载性能,它让我对这些不必要的Etags感到满意.如果它们实际上是不必要的,有没有人知道如何抑制它们的排放?

dav*_*ock 0

如果无论您从哪个节点下载资产,Cloudfront 都会提供一致的 Etag,那么这应该可以最大程度地减少问题。我通过执行以下操作对此进行了测试:

从两个不同的位置解析到 Cloudfront,我验证了 CNAME 解析为完全不同的 IP 地址集。第一个服务器解析为 Amazon LAX 数据中心 (lax1.cloudfront.net) 中的一组 8 个 IP 地址,第二个服务器解析为 Amazon SFO 数据中心 (sfo4.cloudfront.net) 中的 8 个 IP 地址。

我在 Cloudfront 发行版中选择了一个对象,并从每个位置执行了“wget --server-response”,然后比较了结果。我对每个数据中心执行了多次此操作,以获取来自每个数据中心中不同 IP 地址的响应。

结果是,无论我访问哪个数据中心以及从该数据中心响应哪个 IP 地址,Etag 都是相同的。

我确实注意到服务器之间的以下标头确实不同 x-amz-id-2 x-amz-request-id Age X-Amz-Cf-Id Via

希望这可以帮助,

大卫

[已编辑 - 根据下面的良好更正删除了对 eTags 的评论]

  • 这不是真的,Web 性能监视器会在 Etag 和 Last-Modified 标头方面给您带来错误,因为即使您在 Cache-Control 标头中的 max-age 很长,这两个标头也会导致不必要的服务器往返。如果正确使用 Etag(和最后修改时间),这些往返的结果将是状态代码 304。但这里的差异是 300 毫秒与 2 毫秒(浏览器缓存),并且如果您使用许多静态资源(css 、js、图像)。 (4认同)