felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

前端性能优化总结 #134

Open felix-cao opened 5 years ago

felix-cao commented 5 years ago

一、概述

image 这是一张前端性能优化图,图中已经对前端性能做了一些概括,还是比较全面的。本文主要从三个方面就前端性能优化进行归纳总结:

二、可控的网络资源

2.1、减少http请求

通过减少请求数量来加快网络加载速度,在雅虎的 YUI 35个规则中也有提到,主要是优化 jscss和图片资源三个方面:

在现今的前端开发中,其实这4个方面都可以借助 webpack 这个优秀的打包工具处理,开发者只关心业务逻辑实现。

2.2、减小资源体积

减小资源体积,那么资源在网络传输过程中自然就快一点,可以通过以下几个方面进行实施:

同样,后面三个都可以交给 webpack 来处理,而gzip压缩主要是通过 web 服务器中的配置实现的,如 Nginx 配置文件 一般都会开启 gzip 压缩,而现代浏览器也都支持这一行为。

2.3、缓存:可以通过以下几个方面来描述:

缓存是效率最高的一种,往往缩短的加载时间也是最大的,主要有:

三、DOM 操作与网页渲染优化

操作 DOM 会导致浏览器渲染流程的 reflowrepaint,而 reflowrepaint 会产生浏览器的性能开销。这里的知识可以阅读下面两篇文章:

但是reflowrepaint 是无法避免的,所以我们主要是要最小化导致 reflowrepaint 的次数,即减少 DOM 操作与网页渲染。

3.1、渲染优化

css文件放在头部加载,可以保证解析DOM的同时,解析css文件。因为,CSS(外链或内联)会阻塞整个DOM的渲染,然而DOM解析会正常进行,所以将css文件放在头部进行解析,可以加快网页的构建速度。假设将其放在尾部,那时DOM树几乎构建,这时就得等到CSSOM树构建完成,才能够继续下面的步骤。

js 文件不同,将 js 文件放在尾部或者异步加载的原因是JS(外链或内联)会阻塞后续 DOM 的解析,后续 DOM 的渲染也将被阻塞,而且一旦 js 中遇到 DOM 元素的操作,很可能会影响。

3.2 DOM 操作优化

四、数据显示优化

等等,暂时写这么多,以后慢慢补充!