总览
本书介绍了提高网站性能的14条规则:
- 减少HTTP请求
- 使用内容发布网络
- 添加Expires头
- 压缩组件
- 将样式表放在顶部
- 将脚本放在底部展示
- 避免CSS表达式
- 使用外部JavaScript和CSS
- 减少DNS查找
- 精简JavaScript
- 避免重定向
- 移除重复脚本
- 配置ETag
- 使Ajax可缓存
本书配套实例:点此访问
绪言
本书有两个绪言,记录如下:
绪言A:前端性能的重要性
性能黄金法则:从web服务器获取HTML文档,到呈现在浏览器只花费10%~20%的响应时间(后端),需要关注剩余80%~90%的响应消耗(前端,HTML文档所引用的各个组件:CSS、JS、IMAGE等)。
对网站性能来说,前端的优化成本和效果优于后端。
绪言B:HTTP概述
熟悉HTTP协议可以带来更多可优化的点。例如:
- 压缩
|
|
- 使用缓存:304 Not Modified
缓存有效性源自其最后修改时间。
- Expires
304可以让页面加载的更快,但仍然需要在客户端和服务器之间进行一次往返确认。使用Expires头可以消除这个需要。
|
|
- Keep-Alive
一个连接上进行多个请求。
规则1-减少HTTP请求
图片地图(Image Map)
- 目的:减少图片的请求数。
- 方法:使用
- 缺点:图片必须是连续的。精确定义区域比较困难,一般定义为矩形区域。
|
|
CSS Sprites
- 目的:合并图片,减少图片请求数
- 方法:利用span或者div等支持背景图片的HTML元素,使用CSS的background-position属性,可以讲HTML背景放置在期望的位置上
- 优点:不需要地图中的图片是连续的,且合并的图片比单独的图片相加要小(虽然多了空白,但是少了图片本身的开销:颜色表、格式开销等)。
CSS:
HTML:
内联图片(Inline Image)
- 目的:去除图片下载
- 方法:利用data属性,将图片转为64位编码后写在HTML中
- 缺点:1.需浏览器支持;2.存在数据大小的限制;3.转为编码后会增大图片的大小;4.不会被缓存
可以放在外联样式表中,增加一个HTTP请求来换取缓存
|
|
合并脚本和样式表
- 目的: 减少http请求
- 方法:脚本之间合并,样式表之间合并。
需要保持JS的模块化,一组特定的模块生成一个目标文件。比如文件1需要script1,script2,script3,文件2需要script2,script3,script4,scipt5。那么合并后,产生script1,script_combine(包含script2,3),script4,script5。