ETag运用结果对照及ETag配置图文教程
提起向百度提交数据,大家根本都会想到sitemap,最近又推出的etag是什么东东?真的能有结果吗?
sitemap是解决网站收录至关重要的路径之一,而平常sitemap的更新都不是很及时,并且体量都相对较大,此时也耗损了响应的网站流量及带宽。而ETag可以用来标示网页是否产生了变化,要是没有变化返回304状态码,就不用再从新传输整个网页了。
在我们的sitemap配置了ETag之后,对日志一段工夫的监测发明,其sitemap相应工夫以及耗时的均匀工夫均大幅度下降,爬虫访问 sitemap文件的次数有所添加,关于收录而言,通过图表也能看出相对的增长曲线,我们的整体收录率大致晋升范畴在2% – 5%左右。所以在此,热烈倡议大家设置sitemap的ETag,简简略单的一个小行动就能看到相对显明的结果还是很不错的。
ETag全称EntityTags,HTTP协定规格注明中定义“ETag”为“被请求变量的实体值”。我们也可以把ETag了解为是一个客户端与 服务器关联的记号。这个记号告诉客户端,目前网页在上次请求之后是否有产生变化,当产生变化时,ETag的值从新盘算,并返回200状态码。要是没有变 化,返回304状态码。从而不会从新加载整个页面信息。
如下,是我司站点的sitemap文件的头信息:
我们看到,ETag中包含了一连串的数据,这就是盘算出来的一个值,要是它产生变化,注明其页面内容一定产生了变化。要是页面没有产生变化时,头信息应当如下:
在我们与技术沟通配置ETag时,需要通过此种方式进行验证。第一次访问200状态码,有ETag的一行文本,再次访问该页面时,状态码为304,ETag的值不变。至此,我们就可以肯定ETag配置成功。
另外,sitemap启用Etag后:
1、百度可以更及时地相应sitemap的更新;
2、页面没有更新的状况下,对流量的耗损极小;
3、百度更加及时的抓取sitemap,便于更好的收录;
但多数状况下,ETag会与Last-Modified一起运用,这样可应用客户端(例如阅读器)的缓存。由于服务器首先发生Last- Modified/Etag标志,服务器可在稍后运用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓 存。
站点服务器怎样配置ETag?
最佳是对全站进行配置ETag,这样关于站点而言,在带宽耗损、爬虫抓取上的晋升还是会有很大收益的。
一、Apache
Apache依据配置文件中的配置来设置Etag值,默许的Apache的FileEtag设置为:
FileEtagINode Mtime Size
也就是依据这三个属性来生成Etag值,他们之间通过一些算法来实现,并输出成hex的格局,相邻属性之间用-分隔,比方:"2e681a- 6-5d044840",这里面的三个段,离别代表了INode,MTime,Size依据算法算出的值的Hex格局,可以转变Apache的 FileEtag设置,比方设置成FileEtagSize,那么得到的Etag可能为:"6",设置了几个段,Etag值就有几个段。
细致配置:
步骤1
在要启用ETag的目录下添加.htaccess文件并在其中添加一行,如图:FileETagMTime Size
以遮盖默许的Innode MTime Size的ETag,由于默许的ETag运用到的Innode会导致雷同的文件在散布式服务器上发生的ETag不一样。
步骤2
要是.htacces文件已经存在,请确保要启用ETag的目录/.htacces文件中没有FileETagNone。要是存在FileETag None,请删去该行。
检查没有用mod_headers将ETag除去,即httpd.conf文件中没有涌现下面的语句,
LoadModuleheaders_module modules/mod_headers.so
Headerunset ETag
要是涌现如图状况,请删除Headerunset ETag这一行。
步骤3
从新启动httpd,就启用ETag了。
二、Nginx
步骤1
确认Nginx版本,下令:Nginx安装目录/sbin/nginx–v,
版本为1.7.3及更高,继续步骤2;版本为1.7.3下列,1.3.3及以上,进行步骤3;版本为1.3.3下列,不支撑ETag,请晋级您的Nginx。
步骤2
确认没有关闭ETag:打开Nginx的配置文件nginx.conf(默许位置Nginx安装目录/conf/),确保其中没有涌现etagoff;,下图为涌现的状况,请将此行删除。
确认没有运用ngx_headers_more革除ETag头:一样在配置文件中不能涌现如下语句的任意一句,要是涌现请将其删除。
从新启动Nginx,就启用ETag功能了。
步骤3
查看是否开启了gzip,且是否和etag涌现冲突,涌现冲突去步骤4,没有去步骤2。
打开Nginx的配置文件nginx.conf(默许位置Nginx安装目录/conf/),其中涌现gzip on;语句证实开启了gzip,如图
开启gzip时,可能与etag涌现冲突,用阅读器屡次请求此网站的静态元素,要是只返回200,不返回304,证实存在冲突,请去步骤4;没有冲突去步骤2。
步骤4
请关闭gzip,即将上一步中的gzipon;改为gzip off;然后去步骤2。
若不想关闭gzip,并要开启ETag,同时仍要坚持运用目前的Nginx版本,只能修改源码并从新编译。
下载此版本安装包并解压,将其目录下/src/http/modules/ngx_http_gzip_filter_module.c
文件中约309行左右的ngx_http_clear_etag(r);一行注释掉或删掉。如下图
要是没有找到ngx_http_clear_etag(r);而是发明ngx_http_weak_etag(r);如下图,证实此Nginx
没有gzip和etag冲突的题目,无须进行任何修改。
从新编译源码安装Nginx,解决这个冲突,然后去步骤2。
三、IIS
IIS7是默许开启ETag的,要是没有ETag,请按下列步骤设置。
打开Internet Information Services (IIS) Manager,如图双击HTTP相应头部(HTTPResponse Headers),
选中No Grouping标签,在空白处右键选中Add。
设置Name为ETag,Value为双引号
配置web.config:
<system.webServer> ... <httpProtocol> <customHeaders> <add name="ETag"value="""" /> </customHeaders> </httpProtocol> ... </system.webServer>
完成。热门标签:dede模板 / destoon模板 / dedecms模版 / 织梦模板