源伺服器用回響頭裡的ETag來特定一個元素的ETag:
之後,如果瀏覽器要驗證這個元素,它就會用If-None-Match頭來回傳ETag到源伺服器。如果符合的話,一個304狀態的代碼就會從源伺服器返回到瀏覽器,這樣源伺服器就節省了傳輸具體數據的開銷。
用Etags的問題就在於它會標識那個特定的伺服器,如果換了伺服器,Etags也就失去了原有的功能,但是這種現在在網路上太常見了,因為我們經常用伺服器集群。默認情況下,Apache和IIS會在Etag中內嵌數據,這樣會動態減少驗證成功的機會。
Apache1.3和2.x的ETag格式是inode-size-timestamp。雖然一個檔案可能在不同伺服器的同一個目錄,同樣的大小,安全級,時間戳等等,它的inode會隨著伺服器的不同而不同。
IIS5.0和6.0有同樣類似Etags的東西,叫時間戳:ChangeNumber(更改號),更改號是一個用來追蹤IIS配置變化的計數器,ChangeNumber在不同IIS伺服器之間是不一樣的。
它最終的問題就是,IIS和Apache產生的Etags會在不同伺服器之間無法匹配,這樣我們的瀏覽器就無法得到我們期待的304回響,而給我們 的是一個普通的200回響,和正常的數據流。如果你的網站只有一個伺服器還無所謂,如果是集群,而你用的是默認的ETag配置,你的用戶就會獲得更慢的頁 面,你的伺服器也會有更高的負載,消耗更大的頻寬資源,代理也無法高效快取你的內容,甚至即使你有一個長時間過期的頭部,也不會阻止 它重新載入內容。
如果你不想發揮Etags提供的這個彈性驗證模型的優勢,你最好關掉它。Apache中關掉它的方法是在Apache的配置檔案中寫這么一句:
FileETag none
如果是多伺服器負載均衡,可以設定為FileETag MTime Size,apache默認設定為FileETag INode MTime Size,去掉INode。
相關詞條
-
ETags
Etags(Entity tags)是伺服器和瀏覽器的一個功能,它用來判斷瀏覽器快取里的元素是否和原來伺服器上的一致。
-
yslow
的問題。14. 配置ETags它用來判斷瀏覽器快取里的元素是否和原來伺服器...。使用ETags減少Web套用頻寬和負載15. 可快取的AJAX“異步”並不...
概述 Yslow-23條規則 -
記憶體映射
用來生成ctags/cscope/etags。一、用法:找一個空目錄...etags$makeSRCDIR=/usr/src/linux-2.6.12...
簡介 定址概述 工具 選取 初始化 -
CouchDB權威指南
顯示函式顯示函式API沒有副作用設計文檔查詢顯示函式Etags函式...的參數一個示例列表函式列表函式的理論查詢列表函式列表函式、Etags和...
內容介紹 作者介紹 作品目錄 -
HTTP 2.0
cookies、ETags等特性都是可用的。 詳細內容節選:1。超文本傳輸協定...
協定定義 協定內容 語義改進 存在問題 專家評議 -
HTML5移動Web開發實戰
8.6.3 回顧8.6.4 延伸8.7 移除ETags...
內容簡介 目錄 -
Etag
概念Etag 是URL的Entity Tag,用於標示URL對象是否改變,區分不同語言和Session等等。具體內部含義是使伺服器控制的,就像Cookie那樣。性能聰明的伺服器開發者會把ETags和GET請求...
概念 請求流程 作用 Apache -
高性能網站
最小化、避免重定向連線、刪除重複腳本、配置ETags、生成可緩衝Ajax...
內容簡介 作者簡介 目錄 -
高性能網站建設指南
JavaScript的技巧、關閉ETags的技巧、Ajax快取技術和最小化技術等。本書適合...
版權資訊 內容簡介 作者簡介 編輯推薦 目錄