WEB性能优化
Web性能优化之分析
优化:用户觉得网站加载速度快.
占用CPU少不算,它属于服务器性能优化.
先来了解用户浏览器输入url,按回车后,前端部分
- 缓存
- DNS查询
- 建立TCP链接
- 发送HTTP请求
(后台处理),等待中 - 接收响应
- 接收完成,得到HTML
- 浏览器解析HTML,先查看DOCTYPE
- 逐行解析
- 如果看到标签,部分浏览器直接渲染,部分浏览器不渲染(因为W3C没有规定以何种形式渲染)
例如chrome,假如直接渲染那么css下载完毕后,要再次渲染,IE与Firefox则是直接渲染,css下载结束后再渲染一次. - 看到CSS,下载CSS,继续往下看还有没有CSS,假如有则同时下载另外的CSS,最多可以同时下载单个域名同时8个(chrome)/4个(ie8).逐个解析.(并行下载,解析串行).
- 看到JS,并行下载,解析串行,一定阻塞HTML渲染.
WEb性能优化之对策
对以上步骤进行分治.
DNS查询:
- 减少域名,以减少DNS查询时间,把资源放到同一个域名内.
建立TCP链接:
- 开启keep-alive,使得TCP链接复用.
- 开启HTTP2.0,进行多路复用,效率更高.
发送HTTP请求
- 减少Cookie体积,从而减少请求体积.不要滥用Cookie.
- 使用CahcheControl(缓存),一定时间内不发请求.
- 增加请求域名,可以同时发送更多个请求.(浏览器单域名8/4个).
与DNS查询优化冲突:权衡利弊,假如文件少则减少域名,从而减少DNS查询时间,假如文件多则增加域名,让其同时下载文件数变多,加快下载时间. - 把多个JS/CSS文件合并成一个,减少请求数.
接收响应
- 利用ETAG,返回304响应,不进行下载,直接用上次的文件.
- 用Gzip压缩,缺点:耗费CPU.权衡:文件越大收益越高,反之越低,比如文件只有1K.
DOCTYPE
- 一定要写对,不能写错,或者不写.写错了浏览器会猜.
标签
- 尽量减少标签使用
CSS/JS文件下载
- 尽量把JS放CDN,增加并发下载数,同时让资源分布到全球各地,资源 下载速度更快.
- 把CSS放在head里:因为CSS一定会柱塞渲染,就算放最后也会柱塞,所以尽早下载.保证用户看到完整的画面.
JS放在body最后,尽早显示页面,而且让JS可以获取到之前渲染好的节点.
延迟组件加载
节约流量预加载
还没看的时候就加载了.加个Loading动画
测试优化
Chrome浏览器,点击Audtis,点击perform,点击run.
版权声明:本博客所有文章除特殊声明外,均采用 CC BY-NC 4.0 许可协议。转载请注明出处 Roxas Deng的博客!