2011-12-05 115 views
3

我一直在閱讀關於HTTP browser caching並在我自己的網站上玩弄它,當我注意到,根據谷歌,jQuery的Media Temple ProCDN backed libraryhttp://code.jquery.com/jquery-1.7.1.min.js不遵循caching best practicesHTTP緩存:爲什麼使用ETag而不是緩存控制和/或過期?

差不多(我認爲),有兩種類型的瀏覽器端緩存:

  1. 過期和Cache-Control:max-age的。

    這些被認爲是無條件應用的「強大的緩存頭」;也就是說,一旦它們被設置並且資源被下載,瀏覽器將不會發布對該資源的任何GET請求,直到到期日或最大年齡到達了。」

  2. 的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人員的錯誤配置?

+0

也許這個問題是更適合ServerFault,但希望它可以在這裏。 – ehc

回答

2

ehc,我會着手解決這個問題,但是恭敬地指出,這可能不是發表此類問題的最佳場所,因爲這不是一個真正的問題? (可能?但是無論如何)

實際上,我們現在沒有使用proCDN - 我們在舊版本中不會讓我們定製任何東西:/但是!好消息!他們用一些新東西來吸引我們,procdn(它有一些統計/跟蹤的東西,也會很整潔)和一些更快的盒子,所以我們應該能夠讓我們的緩存更好 - 因爲你是對的,它是現在不是那麼好。此外,我們不能做任何自定義標題或類型或任何東西,這有時候很好。

聽起來就像你已經做了大量的研究 - 有時候彈出到#jquery-dev中(如果你想提供你的幫助來修復這些設置的某些東西,你似乎有知識和有興趣的幫助:)

+0

是的,不是真正的問題... 我會在#jquery-dev的某個時間聯繫聊天。謝謝! – ehc