在IIS产品家族中,新的版本(例如IIS 7以后的版本)会自动配置一个ETag,这个ETag的值很类似于下面这样:

6ab823201a4ece1:0

它是由两个部分组成的

第一部分称为FileTimeStamp(时间戳),我们很容易联想到这可能是跟文档修改时间有关系,事实上确实是,但你无法将其直接还原为文档修改时间(微软并没有公开这部分的算法)。我确实对此做过一些研究,但最终还是没有办法解释这个值如何生成的,所以大家也只需要知道,这个是类似于一个时间戳的值就可以了。

第二部分为ChangeNumber(修改编号)。这个值在IIS 7.0以及后续的版本中,被统一设置为0。设置为一个统一值有利于解决一些问题(例如在服务器场模式下,该问题我后续也会讨论到)。事实上,保留这个ChangeNumber我觉得主要是历史遗留问题,因为早期版本是有这个值,而且可以不一样。既然如果这个值不一样的话,会给我们惹一些麻烦,那么其实最好的做法是干脆就不要这个字段了。但我想,为了保持格式上的一贯性,微软最终保留了这个字段。

这个默认的ETag不需要任何的配置就会存在(反过来,你如果要删除它倒是很不容易,这个问题后续也会提到),但我们可以继续添加自己想要的特殊ETag。也就是说,对于一个资源,实际上是可以有多个ETag的。

IIS7是默认开启ETag的,如果没有ETag,请按以下步骤设置:

打开Internet Information Services (IIS) Manager,如图双击HTTP响应头部(HTTPResponse Headers)

IIS配置Etag详解

选择No Grouping标签,在空白处右键选择Add

IIS配置Etag详解

设置Name为ETag,Value为双引号

IIS配置Etag详解

配置web.config:­


<system.webServer>

    ...

              <httpProtocol>

                      <customHeaders>

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

                      </customHeaders>

              </httpProtocol>

    ...

</system.webServer>

 

完成,效果如图:

IIS配置Etag详解

转载自:http://www.yudouyudou.com/jiaochengheji/wangzhanjianshe/263.html

课外阅读:

ETag简介与作用(转载)  http://bbs.tianya.cn/post-itinfo-377617-1.shtml 

ETag使用效果对比及经验分享(附ETag配置教程) http://www.chinaz.com/web/2015/1113/470081.shtml

posted on 2016-08-28 00:04  踏歌&而行  阅读(1423)  评论(0编辑  收藏  举报