【问题标题】:Can I suppress the Etag header from being issued on AWS Cloudfront?我可以禁止在 AWS Cloudfront 上发布 Etag 标头吗?
【发布时间】:2023-03-20 10:08:02
【问题描述】:

我正在使用 Amazon 的 Cloudfront CDN 获取静态资产。 Canfront 为每个 GET 请求发出一个 Etag。我已经使用特定的缓存控制信息为我的所有资产设置了元数据,这(据我所知)使 Etag 变得多余。我在 WebPageTest.org 上测试了我的网站的加载性能,它让我对这些不必要的 Etags 产生了兴趣。如果它们实际上是不必要的,有没有人知道抑制它们被释放的方法?

【问题讨论】:

  • 这有什么更新吗? ETag 强制执行多个 get 请求(即使设置了 Expires 和 max-age)。

标签: http-headers amazon-cloudfront


【解决方案1】:

如果您使用源服务器并在源服务器上禁用了 ETag,CloudFront 不会在其标头中添加 ETag。我通过禁用原始服务器上的 ETag 来验证它。

【讨论】:

  • 直接从 S3 使用 CloudFront 时,有什么方法可以抑制 Etag 和 Last-Modified?
【解决方案2】:

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

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

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

结果是 Etags 是相同的,无论我点击哪个数据中心,以及从该数据中心响应的 IP 地址。

我确实注意到服务器之间的以下标头 DID 不同 x-amz-id-2 x-amz 请求 ID 年龄 X-Amz-Cf-Id 通过

希望这会有所帮助,

大卫

[已编辑 - 根据下面的良好修正删除了 eTag 上的 cmets]

【讨论】:

  • 这不是真的,Web 性能监控器会在 Etag 和 Last-Modified 标头方面给您带来问题,因为这两个会导致不必要的服务器往返,即使您在 Cache 中有很长的 max-age-控制标头。如果正确使用 Etag(和最后修改的),这些往返的结果将是状态码 304。但这里的区别是 300 毫秒与 2 毫秒(浏览器缓存),如果您使用许多静态资产(css , js, 图片)。
猜你喜欢
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2020-12-14
  • 1970-01-01
  • 2016-10-28
  • 1970-01-01
  • 2017-07-04
  • 2015-04-20
相关资源
最近更新 更多