前端常见的性能优化
时间:2020-02-18
本文章向大家介绍前端常见的性能优化,主要包括前端常见的性能优化使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
前端常见的性能优化
1.减少HTTP请求次数和请求的大小
- 雪碧图(图片精灵)
- 图片base64 (webpack中可以配置)
- 尽量使用字体图标或者SVG等矢量图
- 减少HTTP请求次数或者减少请求内容的大小
- 渲染更快:因为它们是基于代码渲染的,而对于位图(png/jpg/gif)是需要先把图片编码再渲染
- 不容易失真变形
- 图片懒加载(延迟加载)
- 音频取消预加载
- preload = ' none' 这样可以增加第一次渲染页面的速度,当需要播放的时候在加载
- 再客户端和服务器进行信息交互的时候,对于多项数据我们尽可能基于json格式来进行传送(XML格式要比JSON格式要大)
- 用WebSocket代替ajax轮询实现消息推送
- 把页面中的css/js/图片等文件进行合并压缩
- 争取css和js都只能导入一个(webpack可以实现自动合并压缩)
- 对于图片自己找工具先压
- 还可以使用服务器的gzip压缩
2.建立缓存机制
- DNS缓存
- 把不经常更改的静态资源做数据缓存(一般做的是304或者ETAG等协商缓存)
- 强缓存和协商缓存(304)
- 离线存储(manifest)
- 有钱就做CDN (地域分布式服务器),还有一个财大粗气的方式:加服务器
- 建立TCP长连接
- ....
3.代码上的优化
减少DOM的重绘与回流
再js中减少闭包的使用
1.栈溢出:死递归 function func(){ func() } func() //不断自己执行自己 解决方法: function func(){ setTimeout(func,0); } func()//利用了异步操作的特性 2.相互引用:引用类型之间的相互调用,形成嵌套式内存 let obj1={ name:'obj2' } let obj ={ name:'obj2', x:obj1 } obj1.x = obj2
避免使用iframe(因为iframe会嵌入其他页面,这样父页面渲染的时候,还要同时把子页面也渲染了,渲染进度也会变慢)
低耦合高内聚(基于封装的方式,减少页面中的冗余代码,提高代码使用效率)
尽可能使用事件委托
函数的防抖与节流
原文地址:https://www.cnblogs.com/JCDXH/p/12326552.html
- Golang不定参数
- [go语言]利用缓冲信道来实现网游帐号验证消息的分发和等待
- 转--Golang语言版 ssh口令破解工具
- cubieboard(树莓派)安装Ubuntu+Apache+PHP+Mysql
- Oracle 12c里的几点补充(一)(r11笔记第7天)
- Oracle备库的PDB无法连接的问题(r11笔记第6天)
- Golang语言社区--模板的使用
- Golang语言写Web 应用程序
- 强制wordpress后台HTTPS
- Golang语言 Cookie的使用
- Golang 语言调用动态库实现OpenGL及windows的API编程
- MySQL中的Online DDL(第一篇)(r11笔记第3天)
- 转--quick-cocos做客户端,golang做服务端,实现HTTP通信
- Nginx配置SSL证书
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 阿里面试:看你springBoot用的比较溜来,说说springboot自动装配是怎么回事?
- CVPR:深度无监督跟踪
- Discourse 数据分发
- Discourse 如何备份到 S3
- Solr集群(即SolrCloud)搭建与使用
- 在CentOS8上安装Surelog
- sqlplus执行错误的问题探究
- 不借助Maven,使用Eclipse创建Hello World级别的Spring项目
- Spring Bean的生命周期
- Spring Bean 后置处理器PostProcessor
- 潘石屹用Python解决100个问题 | 排列组合
- 潘石屹用Python解决100个问题 | 企业根据利润提成发奖金
- 【STM32F407开发板用户手册】第27章
- Spring Bean的继承
- 移动端点击事件延迟的诞生消亡史