我们先来看一张图来确定一下页面性能是由哪些部分组成的
域名解析:搜索DNS服务器并解析域名IP所花费的时间,为5.864ms
建立链接:客户端通过ip地址与web服务器建立链接的时间,为48.275ms
发送请求:客户端向web服务器端发送请求所花费的时间,为0.620ms
等待响应:服务器端从接受http请求到开始响应客户端内容所花费的时间,为273.078ms,这段时间包括数据查询,页面转换为html格式等
接收数据:服务器端的响应内容全部发送到客服端的时间,为4.55ms
初步诊断网站性能瓶颈:
1.首先看一下那个请求花费时间最长,看看这个请求的时间线信息,来确定是服务器端响应慢了还是网络问题
2.如果每个请求花费的时间都没有明显高于其他,那就检查一下是不是这个页面发送的http请求次数过多了。因为浏览器对单个域名的并发连接数有限制的,需要处理完一批请求之后,在发送另外一批请求。假如页面有100个请求,每个请求花费时间为1s,浏览器最大并发数显示为10,那么处理完所有请求花费时间为100/10*1s=10s的时间。
关于最大并发数,http1.1的标准是2,而目前主流的浏览器IE、FireFox、Chrome为了提高速度,分别是10,6,6(根据具体版本可能会有变动)
前端性能策略:
一项专门研究网页性能的工程师发现,一个页面从请求到加载完成,80%的时间都花在了前端上。事实也是如此,大多数时间都花费在获取前端静态文件(html,css,js)上,所以优化网站应该从前端性能着手
高性能的Html:
1.避免空连接
什么是空连接?空链接指的就是img,a,script,link,iframe等的src或者href,如(href=""),一般浏览器会把它解析为blank,但是IE还是会发送请求的。
2.避免标签的深层次嵌套
层次越多的节点,在初始化构建时候所占用内存越大
3.减小html文档大小
删除对文本无影响的换行,空格或者注释,所以大多数网站上线前都会压缩文件,就是为了减小文件大小
4.避免脚本阻塞加载
浏览器在解析常规script标签时候,会先等待js下载完毕,在执行后边的html代码,所以最好的建议是把script放在页面的底部
高性能的Css:
1.使用css压缩
什么是空连接?空链接指的就是img,a,script,link,iframe等的src或者href,如(href=""),一般浏览器会把它解析为blank,但是IE还是会发送请求的。
2.抽离,拆分css,不加载所有css
层次越多的节点,在初始化构建时候所占用内存越大
3.使用css sprites
删除对文本无影响的换行,空格或者注释,所以大多数网站上线前都会压缩文件,就是为了减小文件大小
4.css放在head中
浏览器在解析常规script标签时候,会先等待js下载完毕,在执行后边的html代码,所以最好的建议是把script放在页面的底部