觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊
客戶中心
關(guān)注云客
之前在《高性能網(wǎng)站建設(shè)指南》中了解過ETag,但一直沒有應(yīng)用。昨晚看到百度站長平臺在大力推薦ETag,忽然有一種凌凌漆接到國家任務(wù)的感覺。
1. 什么是ETag
ETag全稱為Entity Tag,中文名為實(shí)體標(biāo)簽,是Web服務(wù)器和瀏覽器用于確認(rèn)緩存組件有效性的一種機(jī)制。
ETag是結(jié)合對象修改時間,對象大小,INode等特征的一個字符串,于HTTP1.1引入,相對于Last-Modified,提供了比最新修改日期更為靈活的機(jī)制。
ETag目前主要應(yīng)用于靜態(tài)資源,比如圖片,JS和CSS文件。
2. ETag原理
當(dāng)用戶發(fā)送HTTP請求時,瀏覽器會使用If-None-Match頭將ETag值傳回服務(wù)器,如果ETag匹配,則返回304狀態(tài)碼;否則返回200,并傳輸HTTP內(nèi)容。
簡單示意圖如下:
ETag流程圖
注:ETag最常用在靜態(tài)資源上,比如圖片,JS和CSS文件。據(jù)說網(wǎng)頁上也可以使用ETag,但觀察了幾個大型網(wǎng)站都沒有使用,尚不知道原因。
3. 遇到的問題和方法
3.1 集群帶來的準(zhǔn)確性問題
ETag的默認(rèn)格式是inode-size-timestamp,這也意味著在集群中,即便對象大小,權(quán)限,時間戳,路徑全都相同,inode和ETag也會不同。也就是說對于同樣的組件,從集群的一臺切換到另一臺,ETag就會不同。
如果集群中有10臺服務(wù)器,ETag匹配的準(zhǔn)確率只有10%。
3.2 解決方法
那有沒有辦法解決集群的問題?答案是有的,需要對ETag進(jìn)行修改,建議去掉inode,使用size+timestamp,或只使用timestamp的方式。
百度官方也給出了Apache等服務(wù)器下的具體修改方法。
3.3 計算帶來的開支
只要有計算就會帶來額外的成本,但從百度官方提供的測試數(shù)據(jù)來看,CPU利用率會提高1%~3%,吞吐率基本不變,尚能接受。
5. ETag對SEO的影響
ETag如果配置合理,會大幅增加sitemap的利用率。百度對每個站點(diǎn)的主動抓取有數(shù)量限制的,目前情況下,爬蟲無法準(zhǔn)確區(qū)分sitemap中哪些是新增加了網(wǎng)址的,哪些是未改變的,這就造成sitemap利用率較低。有可能爬蟲每天抓的都是萬年不更新的sitemap文件,而我們新加了網(wǎng)址的sitemap卻一直未抓取。
而如果使用了ETag,爬蟲會直接略過未改變的,返回304的sitemap文件,直接抓取最近改變過的sitemap,這樣就提高了sitemap的利用率。
據(jù)說sitemap權(quán)限以后會全面開放,因此ETag的應(yīng)用無論是對站長還是百度都是很有幫助的。
注:因ETag的配置暫未上線,還沒有實(shí)戰(zhàn)數(shù)據(jù),之后會補(bǔ)充進(jìn)來。
評論(0人參與,0條評論)
發(fā)布評論
最新評論