总览
本书介绍了提高网站性能的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