幫助

ETag助力站點(diǎn)提交sitemap ~對站點(diǎn)服務(wù)器如何配置ETag

2019-09-29 09:23 優(yōu)化推廣

一、Apache

 

Apache根據(jù)配置文件中的配置來設(shè)置Etag值,默認(rèn)的Apache的FileEtag設(shè)置為:
       FileEtagINode Mtime Size
       也就是根據(jù)這三個屬性來生成Etag值,他們之間通過一些算法來實現(xiàn),并輸出成hex的格式,相鄰屬性之間用-分隔,比如:"2e681a-6-5d044840",這里面的三個段,分別代表了INode,MTime,Size根據(jù)算法算出的值的Hex格式,可以改變Apache的FileEtag設(shè)置,比如設(shè)置成FileEtagSize,那么得到的Etag可能為:"6",設(shè)置了幾個段,Etag值就有幾個段。

 詳細(xì)配置:

步驟1
       在要啟用ETag的目錄下增加.htaccess文件并在其中增加一行,如圖:FileETagMTime Size

以覆蓋默認(rèn)的Innode MTime Size的ETag,因為默認(rèn)的ETag使用到的Innode會導(dǎo)致相同的文件在分布式服務(wù)器上產(chǎn)生的ETag不同。

步驟2
       如果.htacces文件已經(jīng)存在,請確保要啟用ETag的目錄/.htacces文件中沒有FileETagNone。如果存在FileETag None,請刪去該行。

檢查沒有用mod_headers將ETag除去,即httpd.conf文件中沒有出現(xiàn)下面的語句,
       LoadModuleheaders_module modules/mod_headers.so 
       Headerunset ETag
如果出現(xiàn)如圖情況,請刪除Headerunset ETag這一行。

步驟3      重新啟動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,請升級您的Nginx。

步驟2
       確認(rèn)沒有關(guān)閉ETag:打開Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),確保其中沒有出現(xiàn)etagoff;,下圖為出現(xiàn)的情況,請將此行刪除。

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


重新啟動Nginx,就啟用ETag功能了。

步驟3

查看是否開啟了gzip,且是否和etag出現(xiàn)沖突,出現(xiàn)沖突去步驟4,沒有去步驟2。
打開Nginx的配置文件nginx.conf(默認(rèn)位置Nginx安裝目錄/conf/),其中出現(xiàn)gzip on;語句證明開啟了gzip,如圖

開啟gzip時,可能與etag出現(xiàn)沖突,用瀏覽器多次請求此網(wǎng)站的靜態(tài)元素,如果只返回200,不返回304,證明存在沖突,請去步驟4;沒有沖突去步驟2。

步驟4
        請關(guān)閉gzip,即將上一步中的gzipon;改為gzip off;然后去步驟2。

若不想關(guān)閉gzip,并要開啟ETag,同時仍要堅持使用當(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

沒有gzipetag沖突的問題,不必進(jìn)行任何修改。
重新編譯源碼安裝Nginx,解決這個沖突,然后去步驟2。

三、IIS

 

IIS7是默認(rèn)開啟ETag的,如果沒有ETag,請按以下步驟設(shè)置。

打開Internet Information Services (IIS) Manager,如圖雙擊HTTP響應(yīng)頭部(HTTPResponse Headers),
  選擇No Grouping標(biāo)簽,在空白處右鍵選擇Add。

 設(shè)置NameETag,Value為雙引號

配置web.config:­

<system.webServer>

  ...

       <httpProtocol>

           <customHeaders>

                <add name="ETag"value="&quot;&quot;" />

           </customHeaders>

       </httpProtocol>

  ...

</system.webServer>

完成。


相關(guān)推薦

QQ在線咨詢