觸屏版
全國服務(wù)熱線:0571-87205688
登錄
注冊(cè)
客戶中心
關(guān)注云客
一、Apache
Apache根據(jù)配置文件中的配置來設(shè)置Etag值,默認(rèn)的Apache的FileEtag設(shè)置為:
FileEtagINode Mtime Size
也就是根據(jù)這三個(gè)屬性來生成Etag值,他們之間通過一些算法來實(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文件中沒有FileETagNone。如果存在FileETag None,請(qǐng)刪去該行。
檢查沒有用mod_headers將ETag除去,即httpd.conf文件中沒有出現(xiàn)下面的語句,
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)沒有關(guān)閉ETag:打開Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),確保其中沒有出現(xiàn)etagoff;,下圖為出現(xiàn)的情況,請(qǐng)將此行刪除。
確認(rèn)沒有使用ngx_headers_more清除ETag頭:同樣在配置文件中不能出現(xiàn)如下語句的任意一句,如果出現(xiàn)請(qǐng)將其刪除。
重新啟動(dòng)Nginx,就啟用ETag功能了。
步驟3
查看是否開啟了gzip,且是否和etag出現(xiàn)沖突,出現(xiàn)沖突去步驟4,沒有去步驟2。
打開Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),其中出現(xiàn)gzip on;語句證明開啟了gzip,如圖
開啟gzip時(shí),可能與etag出現(xiàn)沖突,用瀏覽器多次請(qǐng)求此網(wǎng)站的靜態(tài)元素,如果只返回200,不返回304,證明存在沖突,請(qǐng)去步驟4;沒有沖突去步驟2。
步驟4
請(qǐng)關(guān)閉gzip,即將上一步中的gzipon;改為gzip off;然后去步驟2。
若不想關(guān)閉gzip,并要開啟ETag,同時(shí)仍要堅(jiān)持使用當(dāng)前的Nginx版本,只能修改源碼并重新編譯。
下載此版本安裝包并解壓,將其目錄下/src/http/modules/ngx_http_gzip_filter_module.c
文件中約309行左右的ngx_http_clear_etag(r);一行注釋掉或刪掉。如下圖
如果沒有找到ngx_http_clear_etag(r);而是發(fā)現(xiàn)ngx_http_weak_etag(r);如下圖,證明此Nginx
沒有g(shù)zip和etag沖突的問題,不必進(jìn)行任何修改。
重新編譯源碼安裝Nginx,解決這個(gè)沖突,然后去步驟2。
三、IIS
IIS7是默認(rèn)開啟ETag的,如果沒有ETag,請(qǐng)按以下步驟設(shè)置。
打開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>
完成。
評(píng)論(0人參與,0條評(píng)論)
發(fā)布評(píng)論
最新評(píng)論