《高性能网站建设指南》阅读笔记_规则13- 配置ETag
2013-02-01 09:13
387 查看
ETag:实体标签,是web服务器和浏览器用于确认缓存组件的有效性的一种机制。是唯一标识了一个组件的一个特定版本的字符串.IIS上的ETag格式是Filetimestamp:ChangeNumber即;时间戳和跟踪IIS配置变化的计数器组成的字符串。
工作机制:
前面提到过,检测组件是否有效时,是通过Web服务器与客户端缓存的组件进行匹配的。有两种方式:
--比较最新修改日期
原始服务器通过的Last-Modified响应头来返回组建的最新修改日期,浏览器通过If-Modefied-since进行比较判断,如果匹配则返回304(not 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
工作机制:
前面提到过,检测组件是否有效时,是通过Web服务器与客户端缓存的组件进行匹配的。有两种方式:
--比较最新修改日期
原始服务器通过的Last-Modified响应头来返回组建的最新修改日期,浏览器通过If-Modefied-since进行比较判断,如果匹配则返回304(not 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
相关文章推荐
- 《高性能网站建设指南》阅读笔记_规则7- 避免CSS表达式
- 《高性能网站建设指南》阅读笔记_规则8- 使用外部javascript和css
- 《高性能网站建设指南》阅读笔记_规则9- 减少DNS查找
- 《高性能网站建设指南》阅读笔记_规则10- 精简javascript
- 《高性能网站建设指南》阅读笔记_规则6- 将脚本放在底部
- 《高性能网站建设指南》阅读笔记_规则11- 避免重定向
- 《高性能网站建设指南》阅读笔记_规则12- 移除重复脚本
- 《高性能网站建设指南》阅读笔记_规则3- 添加Expires头
- 《高性能网站建设指南》阅读笔记_规则14- 使Ajax可缓存
- 《高性能网站建设指南》阅读笔记_规则4- 压缩组件
- 《高性能网站建设指南》阅读笔记_规则1-减少HTTP请求
- 《高性能网站建设指南》阅读笔记_规则2- 使用内容发布网络
- 《高性能网站建设指南》阅读笔记_规则5- 将样式放在顶部
- openstack源码阅读笔记2 配置与oslo_config
- 笔记13(FTP配置、tomcat配置、resin配置、MySQL主从配置)
- 语义WEB之逻辑规则[A Semantic Web Primer阅读笔记]
- Database Systems the Complete book 阅读笔记 chapter 13
- OBS源码阅读笔记--绿化配置文件路径
- 大数据笔记13:Hadoop安装之Hadoop的配置安装
- JavaWeb学习笔记-mybatis-13-mybatis配置-mapper映射配置