css js 性能优化,JavaScript前端性能优化

JS性能优化的知识非常庞杂,这里我们来介绍几种常用的性能优化方式。

一、JS中的前端性能优化原则:

多使用内存、缓存等方法

减少CPU计算、减少网络请求

二、针对上述两项原则,我们可以从两个方向入手来进行前端的性能优化。

1、加载资源优化

静态资源的压缩合并

bVbdJ3t?w=563&h=121

bVbdJ3E?w=592&h=42

我们可以利用webpack等打包工具进行资源的合并与压缩操作,可以大大减小资源的大小,实现页面更快的加载。

静态资源缓存

当浏览器发送请求时,可以检测该资源的最新版本是否存在于本地,若存在,则不进行重新加载。可以通过链接名称控制缓存,当缓存改变的时候,链接名称才会改变。

使用CDN让资源加载更快

CDN可以对不同区域的网络进行优化。例如用BootCDN进行优化的事例:

bVbdJ61?w=608&h=33

SSR后端渲染

使用SSR进行后端渲染,将数据直接输入到HTML中,而不需要先下载HTML页面,再执行AJAX获取服务器端的数据。很早以前的jsp、php、asp都属于后端渲染,现在Vue、React也提出了这样的概念,经测试表明,页面的加载时间可以大大缩短。

2、渲染优化

CSS放到header中,JS放到body最下面

(1)将CSS放在部分:在渲染body部分时,可以渲染已经规定好样式。若将CSS样式放到要渲染的DOM节点之后,就会出现最开始按照默认形式渲染,执行到css样式又重新渲染。造成样式跳转:用户体验差;性能差:需渲染两次。

正确使用方式如下:

bVbdLhx?w=608&h=404

若将6行放到9后面,就会出现重复加载现象。

(2)JS会阻塞页面DOM的加载,若将JS放到body最下面,首先不会阻塞页面渲染,可以将页面全部渲染后再执行js。其次可以拿到所有的标签,如果放在html上面可能拿不到标签,因为还没有被渲染到。

错误事例:加载执行9行,阻塞第10行的执行。

bVbdLiY?w=607&h=312

注意以该方式进行异步加载时不会阻塞页面的渲染,因为img标签已经渲染出来,只是请求的异步加载内容在加载。

bVbdLjf?w=490&h=377

图片的懒加载

所谓懒加载,就是当用户下拉到该页面时再加载图片,而不是当用户打开页面就将所有图片全部加载完毕。

bVbdLjJ?w=612&h=123

在页面渲染时,将src传入一个很小的图片,真正的图片地址放在自定义属性data-lealsrc中,当真正执行时,再将所需图片加载进来。

减少DOM查询,对DOM查询做缓存

DOM操作是一种非常耗费性能的操作,在写程序时要尽量减少DOM操作。

bVbdLjX?w=615&h=251

通过上面的两种实现方式对比可以看出:未缓存DOM查询时,每次循环都要进行DOM查询;缓存了DOM查询时,只需进行一次DOM查询操作,将数值保存在变量中使用即可。

合并DOM操作

bVbdLkn?w=606&h=332

向文档中插入10个li标签,原始操作是有十次DOM插入操作,但是我们利用定义一个片段(frag),向片段中插入li,不会触发DOM操作,最后将该片段插入到DOM中。只许一次DOM操作,大大提高性能。

时间节流

bVbdLkx?w=617&h=291

这个代码实现的功能是:当连续很快输入时,不需要每次抬起按键都执行函数,只有当按键抬起超过100ms才执行操作,可以减少事件操作,因为在连续操作时会执行很多计算,严重影响性能。

用DOMContentLoaded替代window.onload

window.onload:在页面加载完毕才会执行操作。

DOMContentLoaded:在页面渲染完执行操作,此时图片、视频等可能还未被加载完。

bVbdLk2?w=512&h=119

图片、视频等静态资源大小参差不齐,加载完成时间又会有很大的差别,但html一般很小,加载时间很短,所以利用DOMContentLoaded可以显著提高性能和用户体验。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值