
总览
本书介绍了提高网站性能的14条规则:
- 减少HTTP请求
 - 使用内容发布网络
 - 添加Expires头
 - 压缩组件
 - 将样式表放在顶部
 - 将脚本放在底部展示
 - 避免CSS表达式
 - 使用外部JavaScript和CSS
 - 减少DNS查找
 - 精简JavaScript
 - 避免重定向
 - 移除重复脚本
 - 配置ETag
 - 使Ajax可缓存
 
本书配套实例:点此访问
规则13-配置ETag
减少HTTP请求
ETag(Entity Tag)
实体标签
缓存过程
- Expires头未过期,直接从缓存获取资源
 - Expires头过期后,发送条件Get,确认缓存的组件是否有效。有效则返回304 Not Modified,无效则返回更新后的组件
 
确认缓存组件是否有效有两种方式
- 比较最新修改日期,一致为有效(If-Modified-Since, Last-Modefied)
 - 比较实体标签:实体是对组件的另一种称呼,http1.1中引入,唯一标识了一个组件的一个特定版本的字符串(If-None-Match)
 
ETag带来的问题
- 不同后端服务器上返回的同一资源的ETag标签不一致,增加资源开销
 - If-None-Match的优先级高于If-Modified-Since
 
如果无须自定义ETag,最好不使用ETag。
最佳实践
配置或移除ETag