2010-10-08 73 views
0

我剛剛將我的CSS圖像精靈更改爲從本地運行到CloudFront,現在存在顯着的延遲,即使在頁面和頁面重新加載時也是如此。任何想法爲什麼這可能發生?通過CloudFront比本地加載速度更慢的CSS圖像精靈

+0

本地'是什麼意思,在上下文中,'本地主機'? – 2010-10-08 03:36:42

+0

@大衛托馬斯,是的,本地主機。 – 2010-10-08 04:39:34

回答

2

將圖像從localhost移動到服務器(在這種情況下爲CloudFront)總是會導致速度損失(當然相對於localhost)。這是因爲即使有偉大的託管服務,瀏覽器必須通過因特網發送http請求到該服務器,以查明該文檔是否因爲之前被緩存而被修改,或者不是(未修改:HTTP響應304)。

假設文檔不需要再次下載/重新緩存,這應該是CSS的圖像請求的結尾(特別是如果您使用的是css-sprites)。

如果因爲緩存已過期或文檔已更改而必須重新下載圖像精靈,那麼顯然瀏覽器必須通過互聯網和網絡再次下載該文件。由於您自己的網絡/企業內部網,家庭與家庭之間的家庭與鄰居之間的爭用,以及您的ISP爲您提供的任何速度,都會產生成本。

localhost是相同的機器,並且(可能)具有以毫秒爲單位測量的響應。相比之下,訪問亞馬遜的CloudFront可能只需要一兩秒鐘,但這仍然是一個數量級(或更多)。

+0

謝謝!出於某種原因,Cache-Control頭文件沒有正確更新,並且我在S3瀏覽器中遇到了一個奇怪的問題(因爲我無法加載它)。所以瀏覽器不會進行任何緩存,我仍然無法設置任何過期標題。 – 2010-10-08 04:58:51

+0

現在S3瀏覽器已經備份。一定是中斷。設置緩存標題後,問題不會出現在我身上。但高層次的概述是絕對讚賞的。 – 2010-10-08 05:05:09

+2

請記住,CloudFront會將S3對象緩存24小時或其他內容。因此,如果您在S3上設置緩存控制標頭,但CloudFront在您執行此操作之前已經緩存了您的對象,那麼您將不會看到標頭已設置一段時間的對象版本。 – tfe 2010-10-10 00:32:35