一、ETag簡介 ETag(EntityTags)是URL的tag,用來標示URL對象是否改變,這樣可利用客戶端(例如瀏覽器)的緩存。由服務器首先產生ETag,客戶端通過將該記號傳回服務器要求服務器驗證其(客戶端)緩存。服務器使用它來判斷頁面是否已經被修改,如果未修改返回304,而不必重新傳輸整個對象。 二、現在站點Sitemap存在的問題 1.發現更新不及時 當站點或其Sitemap發生更新時,百度難以及時發現并響應,因為百度難以無時無刻地持續檢查站點內容和Sitemap是否更新。 2.全量抓取,消耗帶寬 現在百度對站點Sitemap的抓取會將Sitemap文件完整下載下來,鑒于Sitemap文件一般較大,而這種下載可能存在多次,故比較消耗網站的流量和帶寬。 三、ETag作用 HTTP1.1用ag來判斷請求的文件是否被修改,主要為了解決Last-Modified無法解決的一些問題 1、一些文件也許會周期性的更改,但是他的內容并不改變(僅僅改變的修改時間),這個時候并不希望客戶端認為這個文件被修改了重新GET; 2、某些文件修改非常頻繁, 1秒內修改了N次,If-Modified-Since能檢查到的粒度是秒級的,這種修改無法判斷 3、某些服務器不能精確的得到文件的最后修改時間; 為此,HTTP1.1引入了ETag.但標準并沒有規定ETag的內容是什么或者說要怎么實現,唯一規定的是ETag需要放在雙引號內。ETag由服務器端生成,客戶端通過If-Match或者說If-None-Match這個條件判斷請求來驗證資源是否修改。我們常見的是使用If-None-Match.請求一個文件的流程可能如下: 第一次請求: 1.客戶端發起HTTP GET請求一個文件; 2.服務器處理請求,返回文件內容和一堆Header,當然包括ETag(例如"1ec5-502264e2ae4c0")(假設服務器支持ETag生成和已經開啟了ETag).狀態碼200,如下圖所示,首次請求百度首頁時,成功得到百度logo圖片文件bd_logo1.png,狀態碼200,大小8.1KB,返回的Header中包括ETag(“1ec5-502264e2ae4c0”)。 第二次請求: 1.客戶端發起HTTP GET請求一個文件,這個時候客戶端同時發送一個If-None-Match頭,這個頭的內容就是我們第一次請求時服務器返回的ETag:1ec5-502264e2ae4c0 2.服務器判斷發送過來的ETag和計算出來的ETag是匹配的,不返回200,返回304,讓客戶端繼續使用本地緩存。如圖所示這次對bd_logo1.png的請求,服務器只返回了Header沒有返回內容,大小僅為349B。
![]() 四、站點啟用ETag的好處 1.對Sitemap啟用ETag后,百度可以更快速地響應Sitemap的更新,沒有更改內容的情況下,服務器只發回304應答頭,對流量的消耗極小,在每個head平均227B大小的通常情形下,一整天二十四小時每秒都回應的流量消耗僅為18.7M。 2.現在站長平臺對每個站點的Sitemap主動抓取次數設有上限,且這項功能沒有對所有站開放,如果您的站點Sitemap啟用了ETag,并通過了測試,那么就可以用很小的流量享受百度及時更新您的Sitemap的功能,以便于百度更好地收錄您網站的內容。 |
免責聲明:本站部分文章和圖片均來自用戶投稿和網絡收集,旨在傳播知識,文章和圖片版權歸原作者及原出處所有,僅供學習與參考,請勿用于商業用途,如果損害了您的權利,請聯系我們及時修正或刪除。謝謝!
始終以前瞻性的眼光聚焦站長、創業、互聯網等領域,為您提供最新最全的互聯網資訊,幫助站長轉型升級,為互聯網創業者提供更加優質的創業信息和品牌營銷服務,與站長一起進步!讓互聯網創業者不再孤獨!
掃一掃,關注站長網微信