我一直在閱讀關於HTTP browser caching並在我自己的網站上玩弄它,當我注意到,根據谷歌,jQuery的Media Temple ProCDN backed library:http://code.jquery.com/jquery-1.7.1.min.js不遵循caching best practices。HTTP緩存:爲什麼使用ETag而不是緩存控制和/或過期?
差不多(我認爲),有兩種類型的瀏覽器端緩存:
過期和Cache-Control:max-age的。
這些被認爲是無條件應用的「強大的緩存頭」;也就是說,一旦它們被設置並且資源被下載,瀏覽器將不會發布對該資源的任何GET請求,直到到期日或最大年齡到達了。」
的Last-Modified和ETag
種種這些都提供高速緩存,但上次修改followes特定瀏覽器的啓發,和ETag需要更多的HTTP請求,儘管它們可輕可重,當一個304不可─已修改返回。無論如何,這兩者都可能涉及更多的GET請求。
靜態jQuery的版本應該從未變化。所以我認爲它應該與未來的Expires標題一起提供。更重要的是,像這樣的資產可以在很多網站上使用,理想情況下不需要新的GET請求(即使檢查ETag有效性很小)。
,似乎只有使用ETag的和沒有的Cache-Control或Expires頭:
Status: HTTP/1.1 200 OK
Accept-Ranges: bytes
Content-Type: application/x-javascript; charset=utf-8
Date: Mon, 05 Dec 2011 19:45:57 GMT
ETag: "9e69008-16eac-5177b900"
Last-Modified: Tue, 22 Nov 2011 02:11:16 GMT
Server: ECS (fra/D59E)
Vary: Accept-Encoding
X-Cache: HIT
Content-Length: 93868
Connection: close
來自:http://web-sniffer.net/?url=http%3A%2F%2Fcode.jquery.com%2Fjquery-1.7.1.min.js
那麼,有沒有理由不設置一個遙遠的未來Expires頭或使用緩存控制這樣的情況?我在這裏誤讀了什麼嗎?或者它是jQuery人員的錯誤配置?
也許這個問題是更適合ServerFault,但希望它可以在這裏。 – ehc