瀏覽器 Last-Modified 和 Etag

Last-Modified 和 Etag
這裏我不準備再次截圖,讀者可以自己使用firebug觀察下etag的工作方式,我要強調一下就是同時存在Etag和Last-Modified的時候,Etag的優先級要高


我們現在要介紹另外一個緩存協商的方法,因爲在某些場景下Last-Modified可能工作的並不愉快,比如有一種情況,我們的Web服務器上面的文件最後修改時間會頻繁的變動,但是文件內容卻沒有修改。那麼對於Last-Modified的緩存協商,每次都會重新獲取文件,而不會使用緩存。

還有一種生產中比較常見的場景,比如我們在集羣環境中,相同的網頁可能被保存在不同的服務器上,在負載均衡的時候用戶的請求會被分配到這些不同的服務器中,但是我們很難保證相同的文件在所有服務器上的最後修改時間都是一致的。那麼這樣用戶請求被分發到時間不對的服務器上時,可能會導致瀏覽器會重新獲取網頁內容。

Etag這個時候站出來勇敢的承擔一切,HTTP1.1協議中並沒有規定Etag的具體格式和生產的方法,總之Web服務器可以給每一個靜態文件都生產一個標籤,或者叫指紋,總之是一個唯一標識符(比如給文件做一個md5),當文件內容改變的時候就修改這個標籤,這樣瀏覽器和Web服務器之間就通過詢問網頁的Etag是否改變來進行緩存協商。

這裏我不準備再次截圖,讀者可以自己使用firebug觀察下etag的工作方式,我要強調一下就是同時存在Etag和Last-Modified的時候,Etag的優先級要高。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章