2011-01-27 26 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

相關問題