《高性能网站建设指南》阅读笔记_规则13- 配置ETag
来源:互联网 发布:信息系统数据质量监控 编辑:程序博客网 时间:2024/05/16 06:39
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
- 《高性能网站建设指南》阅读笔记_规则13- 配置ETag
- 《高性能网站建设指南》阅读笔记_规则1-减少HTTP请求
- 《高性能网站建设指南》阅读笔记_规则2- 使用内容发布网络
- 《高性能网站建设指南》阅读笔记_规则3- 添加Expires头
- 《高性能网站建设指南》阅读笔记_规则4- 压缩组件
- 《高性能网站建设指南》阅读笔记_规则5- 将样式放在顶部
- 《高性能网站建设指南》阅读笔记_规则6- 将脚本放在底部
- 《高性能网站建设指南》阅读笔记_规则7- 避免CSS表达式
- 《高性能网站建设指南》阅读笔记_规则8- 使用外部javascript和css
- 《高性能网站建设指南》阅读笔记_规则9- 减少DNS查找
- 《高性能网站建设指南》阅读笔记_规则10- 精简javascript
- 《高性能网站建设指南》阅读笔记_规则11- 避免重定向
- 《高性能网站建设指南》阅读笔记_规则12- 移除重复脚本
- 《高性能网站建设指南》阅读笔记_规则14- 使Ajax可缓存
- 《高性能网站建设进阶指南》阅读笔记 1
- 《高性能网站建设进阶指南》阅读笔记 2
- 《高性能网站建设进阶指南》阅读笔记 3
- 《高性能网站建设指南》笔记
- HTML ISO-8859-1 参考手册(实体字符)
- 旅途如何连接无线 绝妙妙招 倾囊相授
- cxf基本功能
- spring+hibernate中处理oracle BLOB
- jaxb:extensionBindingPrefixes by disabling the strict mode or by using the extension
- 《高性能网站建设指南》阅读笔记_规则13- 配置ETag
- 设计模式
- 《高性能网站建设指南》阅读笔记_规则14- 使Ajax可缓存
- ubuntu10.10软件更新源问题解决方案
- Silverlight之Silverlight和HTML(DOM,JS)交互 (转载)
- 分布式协调器ZooKeeper3.4—程序员手册
- [Android] Android开发优化之——对界面UI的优化(3)
- Microsoft sql server 2008导入mysql 5.5
- 安装Torch3