百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

前端笔记-性能优化问题(性能优化的作用)

toyiye 2024-08-13 11:41 10 浏览 0 评论

减少请求资源大小或者次数 

1、尽量合并和压缩css和js文件。(将css文件合并为一个。将js合并为一个)原因:主要是为了减少http请求次数以及减少请求资源的大小,打包工具:webpack、gulp、grunt.、....

2、尽量所使用的字体图标或者SVG图标来代替传统png图,因为字体图标或者SVG是矢量图,代码编写出来的,放大不会变形,而且渲染速度快。

3、采用图片的懒加载(延迟加载),目的为了,减少页面第一次加载过程中http的请求次数。

具体步骤:    

  • 页面开始加载时不去发送http请求,而是放置一张占位图。
  • 当页面加载完时,并且图片在可视区域再去请求加载图片信息。

4、能用css做的效果,不要用js做,能用原生js做的,不要轻易去使用第三方插件。避免引入第三方大量的库。而自己却只是用里面的一个小功能。

5、使用雪碧图或者是说图片精灵,把所有相对较小的资源图片,绘制在一张大图上,只需要将大图下载下来,然后利用图片定位来将小图展现在页面中(background-position:百分比,数值)。

6、减少对cookie的使用(最主要的就是减少本地cookie存储内容的大小),因为客户端操作cookie的时候,这些信息总是在客户端和服务端传递。如果上设置不当,每次发送一个请求将会携带cookie。

7、前端与后端进行数据交互时,对于多项数据尽可能基于json格式来进行传送。相对于使用xml来说传输有这个优势。目的:是数据处理方便,资源偏小。

8、前端与后端协商,合理使用keep-alive。

9、前端与服务器协商,使用相应资源的压缩。

10、避免使用iframe,不仅不好管控样式,而且相当于在本页面又嵌套其他页面,消耗性能会更大。因为还会去加载这个嵌套页面的资源。

11、在基于ajax的get请求进行数据交互的时候,根据需求可以让其产生缓存(注意:这个缓存不是我们常看到的304状态码,去浏览器本地取数据),这样在下一次从相同地址获取是数据时,取得就是上一次缓存的数据。(注意:很少使用,一般都会清空。根据需求来做)。

代码优化相关

1、在js中尽量减少闭包的使用原因:使用闭包后,闭包所在的上下文不会被释放。

2、减少对DOM操作,主要是减少DOM的重绘与回流(重排),关于重排(回流)的分离读写:如果需要设置多个样式,把设置样式全放在一起设置,不要一条一条的设置;使用文档碎片或者字符串拼接做数据绑定(DOM的动态创建)。

3、在js中避免嵌套循环和"死循环"(一旦遇到死循环,浏览器就会直接卡掉)。

4、把css放在body上,把js放在body下面让其先加载css(注意:这里关于优化没有多大关系)。

5、减少css表达式的使用。

6、css选择器解析规则所是从右往左解析的。减少元素标签作为最后一个选择对象。

7、尽量将一个动画元素单独设置为一个图层(避免重绘或者回流的大小)。注意:图层不要过多设置,否则不但效果没有达到反而更差了。

8、在js封装过程中,尽量做到低耦合高内聚。减少页面的冗余代码。

9、css中设置定位后,最好使用z-index改变盒子的层级,让盒子不在相同的平面上。

10、css导入的时候尽量减少@import导入式,因为@import是同步操作,只有把对应的样式导入后,才会继续向下加载,而link是异步的操作。

11、使用window.requestAnimationFrame(js的帧动画)代替传统的定时器动画  如果想使用每隔一段时间执行动画,应该避免使用setInterval,尽量使用setTimeout代替setInterval定时器。因为setInterval定时器存在弊端:可能造成两个动画间隔时间缩短。

12、尽量减少使用递归。避免死递归。解决:建议使用尾递归。

13、基于script标签下载js文件时,可以使用defer或者async来异步加载。

14、在事件绑定中,尽可能使用事件委托,减少循环给DOM元素绑定事件处理函数。

15、在js封装过程中,尽量做到低耦合高内聚。减少页面的冗余代码。

16、减少Flash的使用。

存储

1、结合后端,利用浏览器的缓存技术,做一些缓存(让后端返回304,告诉浏览器去本地拉取数据)。(注意:也有弊端)可以让一些不太会改变的静态资源做缓存。比如:一些图片,js,css。

2、利用h5的新特性(localStorage、sessionStorage)做一些简单数据的存储,避免向后台请求数据或者说在离线状态下做一些数据展示。

其他优化

1、页面中的是数据获取采用异步编程和延迟分批加载,使用异步加载是数据主要是为了避免浏览器失去响应。如果你使用同步,加载数据很大并且很慢那么页面会在一段时间内处于阻塞状态。目的:为了解决请求数据不耽搁渲染,提高页面的渲染效率。解决方法:需要动态绑定的是数据区域先隐藏,等数据返回并且绑定后再让其显示,延迟分批加载类似图片懒加载。减少第一次页面加载时候的http请求次数。

2、页面中出现音视频标签,我们不让页面加载的时候去加载这些资源(否则第一次加载会很慢)。解决方法:只需要将音视频的preload=none即可。目的:为了等待页面加载完成时,并且音视频要播放的时候去加载安音视频资源。

相关推荐

# Python 3 # Python 3字典Dictionary(1)

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,格式如...

Python第八课:数据类型中的字典及其函数与方法

Python3字典字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值...

Python中字典详解(python 中字典)

字典是Python中使用键进行索引的重要数据结构。它们是无序的项序列(键值对),这意味着顺序不被保留。键是不可变的。与列表一样,字典的值可以保存异构数据,即整数、浮点、字符串、NaN、布尔值、列表、数...

Python3.9又更新了:dict内置新功能,正式版十月见面

机器之心报道参与:一鸣、JaminPython3.8的热乎劲还没过去,Python就又双叒叕要更新了。近日,3.9版本的第四个alpha版已经开源。从文档中,我们可以看到官方透露的对dic...

Python3 基本数据类型详解(python三种基本数据类型)

文章来源:加米谷大数据Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的"类型"是变...

一文掌握Python的字典(python字典用法大全)

字典是Python中最强大、最灵活的内置数据结构之一。它们允许存储键值对,从而实现高效的数据检索、操作和组织。本文深入探讨了字典,涵盖了它们的创建、操作和高级用法,以帮助中级Python开发...

超级完整|Python字典详解(python字典的方法或操作)

一、字典概述01字典的格式Python字典是一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。字典的每个键值key=>value对用冒号:分割,每个对之间用逗号,...

Python3.9版本新特性:字典合并操作的详细解读

处于测试阶段的Python3.9版本中有一个新特性:我们在使用Python字典时,将能够编写出更可读、更紧凑的代码啦!Python版本你现在使用哪种版本的Python?3.7分?3.5分?还是2.7...

python 自学,字典3(一些例子)(python字典有哪些基本操作)

例子11;如何批量复制字典里的内容2;如何批量修改字典的内容3;如何批量修改字典里某些指定的内容...

Python3.9中的字典合并和更新,几乎影响了所有Python程序员

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

Python3大字典:《Python3自学速查手册.pdf》限时下载中

最近有人会想了,2022了,想学Python晚不晚,学习python有前途吗?IT行业行业薪资高,发展前景好,是很多求职群里严重的香饽饽,而要进入这个高薪行业,也不是那么轻而易举的,拿信工专业的大学生...

python学习——字典(python字典基本操作)

字典Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值...

324页清华教授撰写【Python 3 菜鸟查询手册】火了,小白入门字典

如何入门学习python...

Python3.9中的字典合并和更新,了解一下

全文共2837字,预计学习时长9分钟Python3.9正在积极开发,并计划于今年10月发布。2月26日,开发团队发布了alpha4版本。该版本引入了新的合并(|)和更新(|=)运算符,这个新特性几乎...

python3基础之字典(python中字典的基本操作)

字典和列表一样,也是python内置的一种数据结构。字典的结构如下图:列表用中括号[]把元素包起来,而字典是用大括号{}把元素包起来,只不过字典的每一个元素都包含键和值两部分。键和值是一一对应的...

取消回复欢迎 发表评论:

请填写验证码