2011-01-27 106 views
5

我对静态资产使用亚马逊的Cloudfront CDN。 Couldfront为每个GET请求发布Etag。我已经用特定的缓存控制信息为我的所有资产设置了元数据,据我所知,这使得Etag变得多余。我在WebPageTest.org上测试了我的网站的负载性能,并为我提供了这些不必要的Etags。如果他们实际上是不必要的,是否有人知道一种抑制他们被排放的方法?我可以禁止在AWS Cloudfront上发布Etag标头吗?

+0

对此有何更新? ETag强制多个获取请求(即使设置了Expires和Max-age)。 – 2012-02-19 19:11:15

回答

0

如果Cloudfront提供一致的Etags,而不管您从哪个节点下载资产,那么这应该将问题最小化。我已通过执行以下操作对此进行了测试:

从两个不同位置解析到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删除评论]

+3

这只是不正确的,Web性能监视你关于Etag和Last-Modified标题的错误,因为即使你在Cache-Control标题中有很长的最大时限,这两个标题也会导致不必要的往返服务器。如果Etag(和最后修改)被正确使用,这些往返行程的结果将是状态码304.但是这里的差异是300ms与2ms(浏览器缓存),并且如果使用许多静态资产(css ,js,图像)。 – Evgeny 2012-01-08 17:35:26

1

如果您使用的是产地丝氨酸版本和禁用ETag,CloudFront不会将ETag添加到其标题中。我通过在源服务器上禁用ETag来验证它。

+0

从S3直接使用CloudFront时,有没有办法抑制Etag和Last-Modified? – saver 2014-01-24 18:40:21

相关问题