ETag使用效果對(duì)比及ETag配置圖文教程

提起向百度提交數(shù)據(jù),大家基本都會(huì)想到sitemap,最近又推出的etag是什么東東?真的能有效果嗎?
sitemap是解決網(wǎng)站收錄至關(guān)重要的途徑之一,而通常sitemap的更新都不是很及時(shí),并且體量都相對(duì)較大,此時(shí)也消耗了相應(yīng)的網(wǎng)站流量及帶寬。而ETag可以用來(lái)標(biāo)示網(wǎng)頁(yè)是否發(fā)生了變化,如果沒(méi)有變化返回304狀態(tài)碼,就不用再重新傳輸整個(gè)網(wǎng)頁(yè)了。
在我們的sitemap配置了ETag之后,對(duì)日志一段時(shí)間的監(jiān)測(cè)發(fā)現(xiàn),其sitemap響應(yīng)時(shí)間以及耗時(shí)的平均時(shí)間均大幅度下降,爬蟲(chóng)訪問(wèn) sitemap文件的次數(shù)有所增加,對(duì)于收錄而言,通過(guò)圖表也能看出相對(duì)的增長(zhǎng)曲線,我們的整體收錄率大致提升范圍在2% – 5%左右。所以在此,強(qiáng)烈建議大家設(shè)置sitemap的ETag,簡(jiǎn)簡(jiǎn)單單的一個(gè)小動(dòng)作就能看到相對(duì)明顯的效果還是很不錯(cuò)的。
ETag全稱EntityTags,HTTP協(xié)議規(guī)格說(shuō)明中定義“ETag”為“被請(qǐng)求變量的實(shí)體值”。我們也可以把ETag理解為是一個(gè)客戶端與 服務(wù)器關(guān)聯(lián)的記號(hào)。這個(gè)記號(hào)告訴客戶端,當(dāng)前網(wǎng)頁(yè)在上次請(qǐng)求之后是否有發(fā)生變化,當(dāng)發(fā)生變化時(shí),ETag的值重新計(jì)算,并返回200狀態(tài)碼。如果沒(méi)有變 化,返回304狀態(tài)碼。從而不會(huì)重新加載整個(gè)頁(yè)面信息。
如下,是我司站點(diǎn)的sitemap文件的頭信息:

我們看到,ETag中包含了一連串的數(shù)據(jù),這就是計(jì)算出來(lái)的一個(gè)值,如果它發(fā)生變化,說(shuō)明其頁(yè)面內(nèi)容一定發(fā)生了變化。如果頁(yè)面沒(méi)有發(fā)生變化時(shí),頭信息應(yīng)該如下:

在我們與技術(shù)溝通配置ETag時(shí),需要通過(guò)此種方式進(jìn)行驗(yàn)證。第一次訪問(wèn)200狀態(tài)碼,有ETag的一行文本,再次訪問(wèn)該頁(yè)面時(shí),狀態(tài)碼為304,ETag的值不變。至此,我們就可以確定ETag配置成功。
另外,sitemap啟用Etag后:
1、百度可以更及時(shí)地響應(yīng)sitemap的更新;
2、頁(yè)面沒(méi)有更新的情況下,對(duì)流量的消耗極小;
3、百度更加及時(shí)的抓取sitemap,便于更好的收錄;
但多數(shù)情況下,ETag會(huì)與Last-Modified一起使用,這樣可利用客戶端(例如瀏覽器)的緩存。因?yàn)榉?wù)器首先產(chǎn)生Last- Modified/Etag標(biāo)記,服務(wù)器可在稍后使用它來(lái)判斷頁(yè)面是否已經(jīng)被修改。本質(zhì)上,客戶端通過(guò)將該記號(hào)傳回服務(wù)器要求服務(wù)器驗(yàn)證其(客戶端)緩 存。
站點(diǎn)服務(wù)器如何配置ETag?
最好是對(duì)全站進(jìn)行配置ETag,這樣對(duì)于站點(diǎn)而言,在帶寬消耗、爬蟲(chóng)抓取上的提升還是會(huì)有很大收益的。
一、Apache
Apache根據(jù)配置文件中的配置來(lái)設(shè)置Etag值,默認(rèn)的Apache的FileEtag設(shè)置為:
FileEtagINode Mtime Size
也就是根據(jù)這三個(gè)屬性來(lái)生成Etag值,他們之間通過(guò)一些算法來(lái)實(shí)現(xiàn),并輸出成hex的格式,相鄰屬性之間用-分隔,比如:"2e681a- 6-5d044840",這里面的三個(gè)段,分別代表了INode,MTime,Size根據(jù)算法算出的值的Hex格式,可以改變Apache的 FileEtag設(shè)置,比如設(shè)置成FileEtagSize,那么得到的Etag可能為:"6",設(shè)置了幾個(gè)段,Etag值就有幾個(gè)段。
詳細(xì)配置:
步驟1
在要啟用ETag的目錄下增加.htaccess文件并在其中增加一行,如圖:FileETagMTime Size

以覆蓋默認(rèn)的Innode MTime Size的ETag,因?yàn)槟J(rèn)的ETag使用到的Innode會(huì)導(dǎo)致相同的文件在分布式服務(wù)器上產(chǎn)生的ETag不同。
步驟2
如果.htacces文件已經(jīng)存在,請(qǐng)確保要啟用ETag的目錄/.htacces文件中沒(méi)有FileETagNone。如果存在FileETag None,請(qǐng)刪去該行。
檢查沒(méi)有用mod_headers將ETag除去,即httpd.conf文件中沒(méi)有出現(xiàn)下面的語(yǔ)句,
LoadModuleheaders_module modules/mod_headers.so
Headerunset ETag

如果出現(xiàn)如圖情況,請(qǐng)刪除Headerunset ETag這一行。
步驟3
重新啟動(dòng)httpd,就啟用ETag了。
二、Nginx
步驟1
確認(rèn)Nginx版本,命令:Nginx安裝目錄/sbin/nginx–v,

版本為1.7.3及更高,繼續(xù)步驟2;版本為1.7.3以下,1.3.3及以上,進(jìn)行步驟3;版本為1.3.3以下,不支持ETag,請(qǐng)升級(jí)您的Nginx。
步驟2
確認(rèn)沒(méi)有關(guān)閉ETag:打開(kāi)Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),確保其中沒(méi)有出現(xiàn)etagoff;,下圖為出現(xiàn)的情況,請(qǐng)將此行刪除。

確認(rèn)沒(méi)有使用ngx_headers_more清除ETag頭:同樣在配置文件中不能出現(xiàn)如下語(yǔ)句的任意一句,如果出現(xiàn)請(qǐng)將其刪除。

重新啟動(dòng)Nginx,就啟用ETag功能了。
步驟3
查看是否開(kāi)啟了gzip,且是否和etag出現(xiàn)沖突,出現(xiàn)沖突去步驟4,沒(méi)有去步驟2。
打開(kāi)Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),其中出現(xiàn)gzip on;語(yǔ)句證明開(kāi)啟了gzip,如圖

開(kāi)啟gzip時(shí),可能與etag出現(xiàn)沖突,用瀏覽器多次請(qǐng)求此網(wǎng)站的靜態(tài)元素,如果只返回200,不返回304,證明存在沖突,請(qǐng)去步驟4;沒(méi)有沖突去步驟2。
步驟4
請(qǐng)關(guān)閉gzip,即將上一步中的gzipon;改為gzip off;然后去步驟2。
若不想關(guān)閉gzip,并要開(kāi)啟ETag,同時(shí)仍要堅(jiān)持使用當(dāng)前的Nginx版本,只能修改源碼并重新編譯。
下載此版本安裝包并解壓,將其目錄下/src/http/modules/ngx_http_gzip_filter_module.c
文件中約309行左右的ngx_http_clear_etag(r);一行注釋掉或刪掉。如下圖

如果沒(méi)有找到ngx_http_clear_etag(r);而是發(fā)現(xiàn)ngx_http_weak_etag(r);如下圖,證明此Nginx
沒(méi)有g(shù)zip和etag沖突的問(wèn)題,不必進(jìn)行任何修改。

重新編譯源碼安裝Nginx,解決這個(gè)沖突,然后去步驟2。
三、IIS
IIS7是默認(rèn)開(kāi)啟ETag的,如果沒(méi)有ETag,請(qǐng)按以下步驟設(shè)置。
打開(kāi)Internet Information Services (IIS) Manager,如圖雙擊HTTP響應(yīng)頭部(HTTPResponse Headers),

選擇No Grouping標(biāo)簽,在空白處右鍵選擇Add。

設(shè)置Name為ETag,Value為雙引號(hào)

配置web.config:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="ETag"value="""" /> </customHeaders> </httpProtocol> ... </system.webServer>
完成。

相關(guān)文章
生產(chǎn)服務(wù)器突然本機(jī)無(wú)法訪問(wèn)本機(jī)IP的端口的問(wèn)題及解決方法
生產(chǎn)服務(wù)器突然無(wú)法訪問(wèn)自己本機(jī)IP地址的端口,通過(guò)localhost或者127.0.0.1都可以正常訪問(wèn),本文給大家分享生產(chǎn)服務(wù)器突然本機(jī)無(wú)法訪問(wèn)本機(jī)IP的端口的問(wèn)題及解決方法,感興趣的朋友一起看看吧2023-11-11
阿里龍蜥操作系統(tǒng)(Anolis OS)的虛擬機(jī)安裝
本文主要介紹了阿里龍蜥操作系統(tǒng)(Anolis OS)的虛擬機(jī)安裝,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
服務(wù)器ssh實(shí)現(xiàn)釘釘機(jī)器人告警
釘釘開(kāi)放平臺(tái)機(jī)器人可應(yīng)用消息推送、監(jiān)控報(bào)警等多種場(chǎng)景中,這篇文章主要介紹了服務(wù)器ssh實(shí)現(xiàn)釘釘機(jī)器人告警方法,需要的朋友可以參考下2024-07-07
Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解
這篇文章主要介紹了Web服務(wù)器和應(yīng)用服務(wù)器之間的區(qū)別詳解,應(yīng)用服務(wù)器是為客戶端提供對(duì)業(yè)務(wù)邏輯的訪問(wèn)這種服務(wù)器,根據(jù)客戶端的請(qǐng)求會(huì)將數(shù)據(jù)轉(zhuǎn)化為動(dòng)態(tài)內(nèi)容,一般還需要數(shù)據(jù)庫(kù)的支持,應(yīng)用服務(wù)器的搭建很多時(shí)候依賴于應(yīng)用程序的開(kāi)發(fā)語(yǔ)言,需要的朋友可以參考下2023-07-07
七牛云對(duì)象存儲(chǔ)”get from image source failed:&nb
今天發(fā)現(xiàn)cdn無(wú)法從源站獲取圖片了,經(jīng)過(guò)排查是七牛云的云存儲(chǔ)沒(méi)有正確設(shè)置,更改的域名沒(méi)有將下面的回源host設(shè)置好,就出現(xiàn)了問(wèn)題,下面的具體的設(shè)置步驟2025-02-02
Red Hat 8.0 使用yum報(bào)錯(cuò)的解決方法:This system&nbs
紅帽使用yum源時(shí)提示報(bào)錯(cuò),因?yàn)閥um源需要付費(fèi)注冊(cè),解決方法包括查看已安裝的yum包,刪除所有yum包并檢查,查看系統(tǒng)版本及內(nèi)核信息,下載適合的新的鏡像源,配置依賴源,備份原始repo文件并下載阿里云的repo文件,清除原始配置并使其生效,感興趣的朋友一起看看吧2024-11-11
LVS(Linux Virtual Server)Linux 虛擬服務(wù)器介紹及配置(負(fù)載均衡系統(tǒng))
LVS(Linux Virtual Server) 是Unix-like系統(tǒng)中的一個(gè)虛擬服務(wù)器,是國(guó)內(nèi)貢獻(xiàn)給開(kāi)源組織的一個(gè)最優(yōu)秀的項(xiàng)目之一2012-05-05
Ubuntu服務(wù)器中Swapper與虛擬內(nèi)存配合的方法
當(dāng)物理內(nèi)存不足時(shí),Swapper會(huì)幫助系統(tǒng)將不活躍的數(shù)據(jù)從內(nèi)存轉(zhuǎn)移到磁盤(pán)上的交換空間(Swap),以釋放內(nèi)存給需要更多資源的進(jìn)程,下面將詳細(xì)說(shuō)明Swapper和虛擬內(nèi)存如何協(xié)作工作,并闡述它們?cè)谙到y(tǒng)性能中的作用,感興趣的朋友一起看看吧2025-03-03

