前端性能优化常见方式

1.资源的合并与压缩

原理:减少http请求,减小请求资源的大小

方式:html,css,js压缩,文件的合并,gzip压缩

压缩工具;在线压缩,html-minifier ,后端模板引擎渲染压缩  ,css-clean,uglifyjs2,百度fis

注意:文件合并存在缺点,首屏渲染问题,缓存失效问题

(比如合并的源文件有一个改了,整个要重新请求)

10470618-c8b1d83cc95b29a3.png
文件合并压缩原理图

2.图片的优化

jpg有损压缩,压缩率高,不支持透明—— 大部分不需要透明图片的业务场景

png支持透明,浏览器兼容好—— 大部分需要透明图片的业务场景

webp压缩程度更好,在ios webview有兼容性问题—— 安卓全部

svg矢量图,代码内嵌,相对较小,图片样式相对简单的场景—— 图片样式相对简单的业务场景

常见优化方式:css雪碧图(优缺点)、Image inline、使用SVG进行矢量图的绘制、使用iconfont解决icon问题、使用webp格式图片

3.css、js的加载与执行

css head中阻塞页面的渲染

ucss阻塞js的执行

ucss不阻塞外部脚本的加载

直接引入的js阻塞页面的渲染

js不阻塞资源的加载

js顺序执行,阻塞后续js逻辑的执行

优化方式:

css 样式表置顶

用 link 代替 import

js 脚本置底

合理使用 js 的异步加载能力(defer,async)

4.懒加载和预加载

懒加载:电商,新闻等等。通过监听滚动事件触发

10470618-e7366167a1e22faf.png
10470618-281175612b6c8832.png
10470618-b79f332289be6bba.png

预加载:比如说展示的h5,抽奖盘。静态资源提前请求,然后之后从缓存中取。第三方库:preload.js

5.重绘与回流

回流

10470618-7a305263fa78639a.png
10470618-2b5ff21e84b1356c.png

重绘

10470618-09580c29e94b315d.png
10470618-553d8518e7482601.png

优化方式:(浏览器图层概念)

10470618-32f42a7fd3831ef4.png
10470618-6b9534c9dcf27379.png
10470618-c9d20c0cfedd20d0.png

6.浏览器存储

localstorage、cookie、sessionstorage、indexdb

pwa和service worker

10470618-b068b74afeb4acd5.png
10470618-0e87a1ef5a2e5430.png
10470618-e5985c354f2353b0.png
10470618-0754f16c94be16b7.png

7.利用缓存

10470618-ccb107139a21a12e.png
10470618-63b29d490f8f5b4f.png
10470618-6ae8458f9fe2eadb.png
10470618-91aff8fbae14cfe7.png
10470618-f91c695c31856afd.png
10470618-0d06929cd624e3d1.png

猜你喜欢

转载自blog.csdn.net/weixin_34279184/article/details/87638222