关于小悟志网站地图归档友情链接联系Feed

云上小悟 + 

首页 » 网站建设 »

为什么要关闭ETag?

网站建设
2015年6月17日 / 135次阅读
标签:APACHE

文章《为什么要关闭ETag?》的特色图片

我在给自己的独立博客做SEO的过程中,通过网络学习了很多知识,其中关于Apache的配置方面,很多文章都在说要关闭ETag,但是它们大都是直接说关闭ETag,没有说明为什么要关闭ETag?今天,麦新杰专门研究了下这个问题,并找到了答案。

什么是ETag?

要说清楚为什么要关闭ETag,需要先学习ETag的工作原理,请参考这篇文章:ETag的工作原理

ETag是用来控制Web服务器发送页面的,如果页面至上次请求时一直没有发生变化,下次被请求时,浏览器通过比对服务器两次发过来的页面ETag值,就能够知道页面没有变化,服务器不用发送完整页面内容,浏览器直接调用自己的缓存即可。这样可以减轻服务器的压力并加快浏览器对页面的展现速度。

ETag这么好,为什么要关闭呢?

通过查阅网络上大量的文章,寻找相关线索,麦新杰发现了为什么网络上大家都在说要关闭ETag的可能原因。

首先,要理解一点,那就是在网络上,每多文章都是千篇一律的。比如某个人说要这样,那么很多人都会去学这样,并且很少刨根问底为什么要这样。我在寻找为什么要关闭ETag这个问题时,遇到的也是这样的情况。找到的99%的文章都说要关闭ETag,但是不说为什么。

关闭ETag的原因很可能来自Yahoo的YSlow页面分析工具。

Yahoo的YSlow这个工具会分析页面的加载时间,做SEO的人都懂,页面加载越快,对搜索引擎就越友好,可能获得的排名就越靠前。

那么,为什么YSlow这个工具要建议大家关闭ETag呢?

ETag可能存在的2个问题

1, 大型网站多使用负载分担的方式来调度HTTP请求,所以,同一个客户端对同一个页面的多次请求,很可能被分配到不同的服务器来相应,而根据ETag的计算原理(计算参数包括inode,最后修改时间,和文件大小),不同的服务器,在其它所有方面都一样的情况下,对于同一页面也能够计算出不同的ETag。因此,这时,虽然页面没有发生任何变化,但是服务器还是会给出不同的ETag,重新发送完整的页面内容。这并不是我们希望发生的。

2, ETag的计算占用服务器的CPU资源。

关于第一个问题,其实可以通过修改配置的方式来解决,让ETag的计算不要区分不同的服务器即可,当然,也可以通过关闭ETag来解决。

关于第二个问题,其实没有说完,如果仅仅因为暂用CPU资源就关闭,那么关闭之后就没有ETag所带来的功能了。

关闭ETag,提升服务器性能

其实,实现ETag同样功能的参数还有一个,就是HTTP响应报文中的Last-Modified参数(还是请参考ETag工作原理一文)。Last-Modified参数精确到秒,实现与ETag同样的功能。

Apache判断页面内容是否有更新优先查看ETag,能用ETag就不用管Last-Modified,因为使用Last-Modified参数有个缺陷,如果一个页面在1秒内被多次改变,使用Last-Modified参数是判断不出来的。

如果我们关闭了ETag,Apache服务器就会到了必须使用Last-Modified参数来判断的状态。这时,服务器不用消耗计算ETag的资源,只要您的网站内容能够接受忽略在1秒内对页面的更新这样的条件,关闭ETag确实可以提升服务器性能,提升页面加载速度。

我想,大部分网站都是可以接受忽略在1秒内对页面的更新这样的条件的,这就是YSlow建议关闭ETag的原因。

YSlow建议关闭ETag,最初一批SEO学会了,写了很多文章说要关闭ETag,更多的后来人就跟着学,全部都关闭ETag,网络上充满了关闭ETag的文章。为什么关闭要ETag,恐怕只有这里的一篇。希望我的分析是正确的,欢迎交流。

本文链接:http://www.maixj.net/wz/guanbi-etag-6741
云上小悟 麦新杰(QQ:1093023102)

相关文章

评论是美德

《为什么要关闭ETag?》有2条评论

无力满足评论实名制,评论对非实名注册用户关闭,有事QQ:1093023102.


前一篇:
后一篇:

栏目精选


©Copyright 麦新杰 Since 2014 云上小悟独立博客版权所有 备案号:苏ICP备14045477号-1

网站二维码
拍拍贷
go to top