高性能网站建设指南(雅虎优化前端14条准则)

High Performance Web Sites
高性能网站建设指南
相关例子测试官网
我真是太爱博文视点O’Reilly系列的书了,很幸运能在前端的领域有这样的一系列经典的书籍。
原来雅虎的14条前端优化准则尽在这本书中!


性能黄金法则:只有10%~20%的最终用户响应时间花在了下载HTML文档上。其余的80%~90%时间花在了下载页面中的所有组件上。


法则1:减少HTTP请求次数

1.图片地图 Image Map
2.雪碧图 CSS Sprites
3.内联图片

1
src="data:image/gif;base64,R01···"

4.合并脚本、样式表


法则2:CDN (Content Delivery Network)

CDN是地理上分布的Web Server的集合
将占据主要带宽的静态资源通过CDN发布


法则3:增加Expires Header

通过Expires进行缓存,间接减少HTTP请求。
Cache-Control


法则4:压缩组件

这里的压缩不是指JS脚本文件的精简和并行,而指的是通过Web客户端在HTTP请求中通过的“Accept-Encoding”来指定压缩类型,让Web服务器发送编码后的文件,一般通过Gzip使内容减少70%。


法则5:样式表放头部

在IE中样式表放底部会导致白屏等问题,而其他浏览器会导致闪烁等糟糕的体验。
使用LINK标签将样式表嵌入HEAD中,而@import则会使样式表最后加载。


法则6:脚本文件放底部

1.HTTP1.1规范建议浏览器从每个主机名并行下载两个组件,所以建议将组件分布在两个主机下。
2.脚本会阻塞下载,原因一等待其有可能的重新布局,其次保证脚本的顺序执行。
3.使用defer延迟脚本:异步加载 延迟执行,而asyn则是异步加载,立即执行。


法则7:避免CSS表达式

或者用一次性表达式,CSS表达式执行次数过多。


法则8:使用外部JS和CSS文件

使用外部的文件可以将之缓存,而HTML页面不会缓存。但是也要视情况而定,内嵌方式可以取得更快的响应时间,因为会减少HTTP请求数量。


法则9:减少DNS查询次数

设置DNS缓存,减少主机名可减少DNS查询次数
折中的方法是将内容分布在2-4个主机上,同时能到提高并行下载的数量。HTTP1.1规范建议:从每个主机名并行下载的数量不应该超过两个。


法则10:精简、混淆JS

在压缩之前精简,可以达到更优的效果


法则11:避免重定向

浏览器自动重定向请求到Location指定的URL上
URL最后缺少“/”也会造成该问题


法则12:删除重复的脚本

使用模块系统建立脚本管理模块


法则13:配置ETags

ETag用于唯一标示元素版本的字符串

1
2
3
4
   HTTP/1.1 200 OK 
   Last-Modified: Tue, 12 Dec 2006 03:03:59 GMT
   ETag: "10c24bc-4ab-457e1c1f"
   Content-Length: 12195


法则14:缓存Ajax

为Ajax请求的url增加一个时间戳


更多进阶内容:《高性能网站建设进阶指南》