您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

前端笔记-性能优化问题

时间:2020-07-23 11:50:59  来源:  作者:

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

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即可。目的:为了等待页面加载完成时,并且音视频要播放的时候去加载安音视频资源。



Tags:性能优化   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
对于一个新建连接,内核要发送多少个 SYN 连接请求才决定放弃。不应该大于255,默认值是5,对应于180秒左右时间。。(对于大负载而物理通信良好的网络而言,这个值偏高,可修改为2.这个值仅仅是针对对外的连接,对进来的连接,...【详细内容】
2021-12-08  Tags: 性能优化  点击:(23)  评论:(0)  加入收藏
App的性能优化,可以从多角度优化,包括App启动优化,App启动优化又分为main()函数执行前优化,main()函数执行后优化;包括界面卡顿优化,页面卡顿优化又包括CPU优化和GPU优化;包括安装包瘦...【详细内容】
2021-12-08  Tags: 性能优化  点击:(14)  评论:(0)  加入收藏
一、前言最近参加了几轮面试,发现很多5-7年工作经验的候选人在性能优化这一块,基本上只能说出传统的分析方式,例如ANR分析,是通过查看/data/anr/ 下的log,分析主线程堆栈、cpu、...【详细内容】
2021-06-17  Tags: 性能优化  点击:(149)  评论:(0)  加入收藏
MNN(Mobile Neural Network)是一个高性能、通用的深度学习框架,支持在移动端、PC端、服务端、嵌入式等各种设备上高效运行。MNN利用设备的GPU能力,全面充分“榨干”设备的GPU资源,来进行深度学习的高性能部署与训练。...【详细内容】
2021-04-20  Tags: 性能优化  点击:(228)  评论:(0)  加入收藏
一 题记最近公司项目添加新功能,上线后发现有些功能的列表查询时间很久。原因是新功能用到旧功能的接口,而这些旧接口的 SQL 查询语句关联5,6张表且编写不够规范,导致 MySQL 在...【详细内容】
2021-03-12  Tags: 性能优化  点击:(143)  评论:(0)  加入收藏
【摘要】日常生活中,我们会遇到各种各样的数据,小到公司通讯录,大到互联网用户行为分析。在进行数据分析处理的过程中,查询是必不可少的环节,如何更加高效地进行数据查询。点击:性...【详细内容】
2021-03-03  Tags: 性能优化  点击:(98)  评论:(0)  加入收藏
今天给大家分享的是MySQL性能优化,也是大数据开发指南MySQL的最后一部分。性能优化对于老刘来说,是必须掌握的一个手段,如何让自己变得更加优秀,这块内容还是好好看看!本篇内容相...【详细内容】
2021-02-07  Tags: 性能优化  点击:(162)  评论:(0)  加入收藏
说明:文章有点长,CPU性能主要观测点的理论知识搬砖堆砌得较多,主要是为了大家对CPU性能主要观测点有深入理解,这样才能在性能调优和排错的过程中把握方向,希望你能耐心读完。当...【详细内容】
2021-02-02  Tags: 性能优化  点击:(228)  评论:(0)  加入收藏
本文选自“字节跳动基础架构实践”系列文章。 “字节跳动基础架构实践”系列文章是由字节跳动基础架构部门各技术团队及专家倾力打造的技术干货内容,和大家分享团队在基础架...【详细内容】
2021-01-18  Tags: 性能优化  点击:(259)  评论:(0)  加入收藏
写在前面在像 Web 服务这样需要快速响应的应用场景中,SQL 的性能直接决定了系统是否可以使用;特别在一些中小型应用中,SQL 性能更是决定服务能否快速响应的唯一标准严格地优化...【详细内容】
2021-01-07  Tags: 性能优化  点击:(120)  评论:(0)  加入收藏
▌简易百科推荐
摘 要 (OF作品展示)OF之前介绍了用python实现数据可视化、数据分析及一些小项目,但基本都是后端的知识。想要做一个好看的可视化大屏,我们还要学一些前端的知识(vue),网上有很多比...【详细内容】
2021-12-27  项目与数据管理    Tags:Vue   点击:(1)  评论:(0)  加入收藏
程序是如何被执行的  程序是如何被执行的?许多开发者可能也没法回答这个问题,大多数人更注重的是如何编写程序,却不会太注意编写好的程序是如何被运行,这并不是一个好...【详细内容】
2021-12-23  IT学习日记    Tags:程序   点击:(9)  评论:(0)  加入收藏
阅读收获✔️1. 了解单点登录实现原理✔️2. 掌握快速使用xxl-sso接入单点登录功能一、早期的多系统登录解决方案 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器...【详细内容】
2021-12-23  程序yuan    Tags:单点登录(   点击:(8)  评论:(0)  加入收藏
下载Eclipse RCP IDE如果你电脑上还没有安装Eclipse,那么请到这里下载对应版本的软件进行安装。具体的安装步骤就不在这赘述了。创建第一个标准Eclipse RCP应用(总共分为六步)1...【详细内容】
2021-12-22  阿福ChrisYuan    Tags:RCP应用   点击:(7)  评论:(0)  加入收藏
今天想简单聊一聊 Token 的 Value Capture,就是币的价值问题。首先说明啊,这个话题包含的内容非常之光,Token 的经济学设计也可以包含诸多问题,所以几乎不可能把这个问题说的清...【详细内容】
2021-12-21  唐少华TSH    Tags:Token   点击:(9)  评论:(0)  加入收藏
实现效果:假如有10条数据,分组展示,默认在当前页面展示4个,点击换一批,从第5个开始继续展示,到最后一组,再重新返回到第一组 data() { return { qList: [], //处理后...【详细内容】
2021-12-17  Mason程    Tags:VUE   点击:(14)  评论:(0)  加入收藏
什么是性能调优?(what) 为什么需要性能调优?(why) 什么时候需要性能调优?(when) 什么地方需要性能调优?(where) 什么时候来进行性能调优?(who) 怎么样进行性能调优?(How) 硬件配...【详细内容】
2021-12-16  软件测试小p    Tags:性能调优   点击:(19)  评论:(0)  加入收藏
Tasker 是一款适用于 Android 设备的高级自动化应用,它可以通过脚本让重复性的操作自动运行,提高效率。 不知道从哪里听说的抖音 app 会导致 OLED 屏幕烧屏。于是就现学现卖,自...【详细内容】
2021-12-15  ITBang    Tags:抖音防烧屏   点击:(23)  评论:(0)  加入收藏
11 月 23 日,Rust Moderation Team(审核团队)在 GitHub 上发布了辞职公告,即刻生效。根据公告,审核团队集体辞职是为了抗议 Rust 核心团队(Core team)在执行社区行为准则和标准上...【详细内容】
2021-12-15  InfoQ    Tags:Rust   点击:(24)  评论:(0)  加入收藏
一个项目的大部分API,测试用例在参数和参数值等信息会有很多相似的地方。我们可以复制API,复制用例来快速生成,然后做细微调整既可以满足我们的测试需求1.复制API:在菜单发布单...【详细内容】
2021-12-14  AutoMeter    Tags:AutoMeter   点击:(20)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条