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