几乎全部的开发者都会面临着开发的网站存在加载问题,想要加快网页的加载速度。前端的页面更须要在性能优化上下功夫,只有这样才能实现更好的用户体验。本文从构建、浏览器渲染、缓存、PWA、服务端优化等多方面,梳理前端性能优化的技术点、综合分析技术的原理,根据不一样的业务场景选择合适的性能优化点进行应用,最终为你的网站带来显著的速度提高和总体性能提高。css
先看一下早期CS架构的开发与部署过程html
再看一下如今BS架构的开发与部署过程前端
从地址栏输入url到页面渲染出来,整个过程经历了什么(一道经典的面试题。。)让咱们用一张图来了解整个过程:node
从上图这个请求过程,咱们能够思考一下其中一些潜在的性能优化点:ios
综上,咱们得出深刻理解http请求过程
是前端性能优化的核心web
HTML代码压缩就是压缩这些在文本文件中有意义,可是在HTML中不显示
的字符,包括空格
、制表符
、换行符
等,还有一些其余意义的字符,如HTML注释
也能够被压缩。面试
HTML代码压缩的意义:
以google为例,google的流量,占到整个互联网的40%,2016年全球网络流量达到1.3ZB(1ZB=10^9TB)
,那么google在2016年的流量就是1.3ZB*40%,若是google每1MB请求减小一个字节,每一年能够节省流量近500TB
。算法
那么如何进行HTML的压缩呢?后端
如何进行css压缩:浏览器
如何进行js压缩和混乱:
可是文件合并也存在它本身的问题:
解决方案:
如何进行文件合并:
区别主要仍是文件大小和色彩的丰富程度
png8
:256色 + 支持透明png24
:2^24色 + 不支持透明png32
:2^24色 + 支持透明每种图片格式都有本身的特色,针对不一样的业务场景选择不一样的图片格式很重要。
先看一下四种经常使用图片格式的各自特色吧:
jpg
有损压缩,压缩率高,不支持透明png
支持透明,浏览器兼容好webp
压缩程度更好,在ios webview有兼容性问题svg
矢量图,代码内嵌,相对较小,图片样式相对简单的场景根据各自不一样的特色获得适用的业务场景分别为:
jpg
:大部分不须要透明图片的业务场景png
:大部分须要透明图片的业务场景webp
:安卓所有svg
:图片样式相对简单的业务场景,如iconcss雪碧图
image inline
矢量图
在安卓下使用webp
webp的优点体如今它具备更优的图像数据压缩算法,能带来更小的图片体积,并且拥有肉眼识别无差别的图像质量;同时具有了无损和有损的压缩模式、Alpha透明以及动画的特性,在JPEG和PNG上的转化效果都很是优秀、稳定和统一。
先用一张图来理解html页面加载渲染的过程:
html渲染过程当中有如下特色:
顺序执行、并发加载
(1)词法分析 (2)并发加载 (3)并发上限
是否阻塞
依赖关系
引入方式