《高性能网站建设指南》阅读笔记_规则13- 配置ETag

本文深入解析了ETag实体标签在网页缓存有效性确认过程中的作用,详细阐述了其工作机制,包括与Last-Modified头的比较方式,并讨论了在多服务器环境下ETag的一致性和优化策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ETag:实体标签,是web服务器和浏览器用于确认缓存组件的有效性的一种机制。是唯一标识了一个组件的一个特定版本的字符串.IIS上的ETag格式是FiletimestampChangeNumber即;时间戳和跟踪IIS配置变化的计数器组成的字符串。

工作机制

前面提到过,检测组件是否有效时,是通过Web服务器与客户端缓存的组件进行匹配的。有两种方式:

--比较最新修改日期

原始服务器通过的Last-Modified响应头来返回组建的最新修改日期,浏览器通过If-Modefied-since进行比较判断,如果匹配则返回304not Modefied),避免了200请求

-- 比较ETag实体标签

服务器传递客户端组件一个ETag,如:

服务器发送ETag:"10c24bc-4ab-457e1c1f"

此后,如果浏览器验证该组件,则会使用If-None-Match头将ETag传回原始服务器,如:

浏览器发送If-None-Match:"10c24bc-4ab-457e1c1f"

如果相同,则服务器返回304 Not Modified

如果不相同,则服务器重新向浏览器发送该组件。                           

如果一个网站有多台服务器,那么,对于完全相同的组件,从一台服务器到另一台服务器,IIS产生的ETag是不会匹配的。就是说如果有10台服务器,用户得到正确304响应的几率只有10%,其余的90%都会得到200响应并下载所有的数据,

需要注意的是:ETag的服务器返回(If-None-Match)比最新修改日期的返回(If-Modified-Since)具有更高的优先级。如果同时存在,则会禁止返回304 Not Modified

建议:

ETag只用在单个服务器的网站上,在多服务器的网站上,可以修改ETag格式(如:IIS中实现从ETag中移除ChangeNumber,只留时间戳),但这样和Last-Modified头是等效的。所以最好将ETag完全移除,已避免组件的重复下载。

如何在IIS中移除ETag,参考:

http://support.microsoft.com/?id=922733

http://support.microsoft.com/?id=922703

Etags,英文全称为entity tags即实体标记。在我们用雅虎浏览器工具Yslow时,就有这么一个优化选项,全称为:Configure entity tags (ETags),即配置实体标记,什么是Etags?ETags(Entity tags)是服务器和浏览器的一个功能,它用来判断浏览器缓存里的元素是否和原来服务器上的一致。ETags 比 last-modified date 更具有弹性,它用一个独一无二的字符串来标识一个元素的版本。很多网站丢分都在这里,比如可好网,经过一系列的优化后,首页也只达到B级83分,这其中Etags得分为F(最低级别), Etags原理:Add an Expires header已经对浏览器缓存机制中的Cache-Control和Expires进行了配置,这一条评测的是另外两个:Last-Modified和ETag。简单的说,即使设置了文件的期限,浏览器在访问资源时也会因为Last-Modified和ETag而重新下载整个资源。 那么如何提升级别呢?网上搜索了一些方法,其最好的方法就是将其关闭,关闭方法很简单,即在在Apache中做如下配置: 以下是引用片段: FileETag none 对于使用windows IIS的服务器,则需要使用第三方的DLL文件更有效些,具体使用方法:下载REMEtags,RemEtag.zip,解压到服务器下的文件夹下,再启用ISAPI,即把RemEtag.dll添加到ISAPI应用下运行,再重启IIS即可生效。 步骤如下: 1、进入到IIS服务器(windows 2003)中,可以是独立服务器或者vps主机,解压remEtags.zip到任意文件夹。 2、打开IIS管理器,右键选择网站--->属性--->弹出网站属性对话框,如图: 3、点击添加按钮,弹出添加对话框: 4、单击确定,重启IIS即可 5、打开网站,看看最终结果:配置成功!!这一选项从之前的F,变为A! 网站的yslow v2 的分数也从之前的83分提高到85分
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值