前端性能优化的若干点

本文探讨了前端性能优化的多种策略,包括使用gzip压缩资源,利用CDN加速内容分发,减少HTTP请求,实现图片懒加载,适当地降低图片质量,优化DOM操作,以及利用缓存提高效率。此外,还解释了程序的局部性原理,强调了时间局部性和空间局部性对于性能的影响。文章还提到了CSS应在head中引入,JS放在底部,以确保页面先渲染样式。
摘要由CSDN通过智能技术生成

1.尽量压缩通过网络传输的各种资源,这里推荐使用gzip压缩。使用gzip,需要客户端支持gzip,同时服务端开启gzip。使用gzip压缩js文件等文本资源有很好的效果,压缩图片或者视频虽然也能让文件体积减小,但相应解压工作会大量增加性能开销,实际对性能优化没多大意义。

2.使用CDN,CDN可以让用户就近获取服务器上的资源。

3.减少请求次数。

4.图片懒加载,也即延迟加载。当网页上要展示的图片过多的时候,让未处于浏览器可视区的图片不加载,当图片处于可视区时同时加载。

5.适当降低图片质量。

6.尽量减少重排和重绘,当页面上元素删除或者增加,大小尺寸发生改变时,浏览器会重排,重排也会重绘。当元素字体的颜色改变的时候,浏览器会重绘。

7.程序的局部性。程序的局部性是指在一段时间内,程序的执行只集中在某一段代码。良好的程序一般都具有良好的局部性。程序的局部性有两种形式,时间局部性和空间局部性。时间局部性是指在一段时间内,某句指令被反复调用,比如常见的循环结构。

var a = [1, 2, 3, 4];
var sum = 0;
for (var i = 0; i < a.length; i++) {
  sum += a[i];
}

sum += a[i];这条语句就会在短时间内反复执行,这样具有良好的时间局部性 。

空间局部性是指程序需要用到的数据的内存地址处于相邻的位置。一般间隔步长越短,空间局部性就越好,性能就越高。举个二维数组的例子。

var a = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12],
];
var sum = 0;
for (var j = 0; j < a.length; j++) {
  for (var i = 0; i < a[j].length; i++) {
    sum += a[j][i];
  }
}

在该例中,每次执行sum += a[j][i]的步长为1,如果把该例换种写法

var a = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12],
];
var sum = 0;
for (var j = 0; j < 4; j++) {
  for (var i = 0; i < a.length; i++) {
    sum += a[i][j];
  }
}

则每次执行sum += a[i][j]的步长为4,这样程序的空间局部性就很差。 

8.在html中,css在head中引入,js部分放在html末尾,这样让页面先渲染出具有样式的结构。

9.在js中尽量减少操作dom。

10.多利用各种缓存。举一个其中的例子,在vue中计算属性和方法有些时候看起来似乎都可以使用,但计算属性的结果会存于缓存,只有当响应式依赖发生变化时,计算属性的getter才会重新执行,否则直接从缓存中读取结果;而方法在响应式依赖没有变化时,也会重新执行里面的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值