2010-01-21 25 views
4

當我在我的站點上運行YSlow時,我在「Configure ETags」項目上得到一個「F」;它聲稱我的圖像,樣式表等很多(所有?)都沒有etags。但是,如果我直接在這些圖像之一上運行測試,我會在etag測試中得到一個A.此外,在Firebug Net面板的Response頭文件中,我可以在整個頁面和直接url版本上看到這個項目的etag。YSlow在ETags上給出不一致的結果

有沒有什麼我可能會造成這種奇怪的行爲?

(我打的網址是herehere如果有人想檢查自己。我不會介意一個全面的檢查,看它是否只是我的瀏覽器版本混淆。)

回答

2

只是嘗試這樣做本地與FF 3.6和YSlow 2.0.3(新發布的版本)和獨立的圖像給出了「B」的分數,引用錯誤配置ETags。

ETag顯示在標題中,bith在FireBug網絡面板和YSlow組件面板中。

但是,這是設計。如果你看看http://developer.yahoo.com/performance/rules.html#etags,你會發現由IIS和Apache生成的默認ETags不是最優的。

作爲參考,在YSlow的實際皮棉規則檢查以下兩個正則表達式:

apache_re = new RegExp("^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$"); 
    iis_re = new RegExp("^[0-9a-z]+:[0-9a-z]+$"); 
+0

即使是具有「B」分數的怪物。我會嘗試升級並看看我得到了什麼。謝謝! –

+0

我認爲YSlow存在的問題是,雖然ETags存在,但IIS生成它們的方式使得它們真的無效並且變化頻繁。 這意味着用戶會比他們應該得到更多的200響應代碼。 (YSlow的鏈接比我更好地解釋!) –

5

我的答案,關於IIS 7,是無視的YSlow的建議。

IIS 7在生成ETag時使用元數據庫更改號爲零。這是冒號後的部分...所以etag總是類似於「5321116d3585ce1:0」,其中第一部分是從最後修改的文件時間生成的,然後是冒號和元數據庫更改編號。

從IIS 7開始,Microsoft始終將該更改號設置爲零,因此即使在多個Web服務器上也是如此。對於IIS 5和6,您可以將其設置爲零,如果你想要達到相同的最終結果:

http://technet.microsoft.com/en-us/library/ee619764(WS.10).aspx

如果YSlow的仍在使用iis_re =新的正則表達式的正則表達式規則(「^ [0 -9a-Z] +:[0-9A-Z] + $「);然後他們錯了,它應該被重寫接受etag爲有效,如果它以結束:0