美文网首页
性能优化

性能优化

作者: 徒步踏古壤 | 来源:发表于2016-12-30 08:15 被阅读0次

性能优化


代码层面:

- 避免使用css表达式,避免使用高级选择器,通配选择器
1. 用`hash-table`来优化查找
2. 少用全局变量
3. 用`innerHTML`代替`DOM`操作,减少`DOM`操作次数,优化`javascript`性能
4. 用`setTimeout`来避免页面失去响应
5. 缓存DOM节点查找的结果
6. 避免使用CSS表达式
7. 避免全局查询
8. 多个变量声明合并
9. 尽量避免图片和iFrame等的空src,空src会重新加载当前页面,影响效率
10. 尽量避免在html标签中写style属性

缓存利用

- 缓存ajax,使用cdn,使用外部js和css文件以便缓存,添加Expires头,服务端配置Etag,减少DNS查找等
- 什么是Etag?
- 当浏览器发送请求时,先会进行浏览器缓存过期判断,浏览器会根据缓存过期时间判断缓存文件是否过期,若没有过期则不会发送请求,直接使用缓存中的文件
- 只有get请求才会缓存,post不会

请求数量

- 合并样式和脚本,使用css图片精灵图,初始首屏之外的图片资源按需加载,静态资源延迟加载

请求带宽

- 压缩文件,开启GZIP
总的来说
1. 减少HTTP的请求,压缩js,css,图片不宜过大
2. 少用全局变量、缓存DOM节点查找的结果。减少IO读取操作
3. 避免在页面的主体布局中使用table,table要等其中的内容完全下载之后才会显示出来

移动端性能优化

- 尽量使用css3动画,开启硬件加速
- 适当使用`touch`事件代替`click`事件
- 避免使用`css3`渐变阴影效果
- 不要滥用float,float在渲染时计算量比较大,尽量减少使用
- 不滥用web字体,web字体需要下载,解析,重绘当前页面
- 合理使用requestAnimationFrame动画代替setTimeout
- css中的属性(transforms,opacity,canvas,video)会触发gpu渲染,合理使用

具体优化


加号操作符

- 用push方法,因为数组是连续的,可以省去很多步骤
- 涉及字符串拼接,通常先定义一个数组,再往数组中push字符串,最后通过数组join方法转为字符串
-原因如下:
1. 加号操作非常耗时和内存
2. 首先开辟一块临时空间,储存字符串
3. 然后再开辟一块空间
4. 将str中的字符串复制到刚刚开辟的空间中
5. 再把需要连接字符串复制到str后面
6. str指向这块空间
7. 回收str原来的空间和临时空间

事件委托

- 事件委托指的是不在事件发生地设立监听函数,而是在父级或者组级设立监听函数,主要是用到事件捕获,大大提高性能,因为减少了绑定事件的元素,减少内存的占用,提高效率。

避免重构 回流

概念

- 重构是指改变每个元素外观触发浏览器的行为,比如 颜色 背景样式发生改变而重新构造新外观的过程。重构不会引起浏览器重新布局页面,不一定伴随着回流。
- 回流指浏览器为了重新渲染页面而重新计算元素的大小,位置等过程。这个过程开销非常大,可以理解为整个dom树重新计算渲染,一般最好触发元素的重构,而避免元素的回流。比如,通过添加类添加css样式,而不是直接在dom上添加,比如 当操作某一块元素的时候,先让它脱离文档流,例如定位等,这样不会引起回流

浏览器渲染的过程

1. 首先是获取html标签,建立dom树
2. 其次根据css样式建立reader树,reader树不包括定位和几何信息
3. 最后构建布局树,布局树包括定位和几何信息

json与XML的区别

1. json数据体积相对XML小,传输速度快
2. json更加容易交互,解析
3. json的数据描述性比XML差

相关文章

  • Android性能优化 - 消除卡顿

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化 - 内存优化 性能分析工具 - Tra...

  • Android性能优化 - 内存优化

    性能优化系列阅读 Android性能优化 性能优化 - 消除卡顿 性能优化- 内存优化 性能分析工具 - Trac...

  • 前端性能优化(中)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(上)...

  • 前端性能优化(下)

    性能优化调研系列文章 《前端性能优化(上)》 《前端性能优化(中)》 《前端性能优化(下)》 《前端性能优化(中)...

  • Awesome Extra

    性能优化 性能优化模式 常见性能优化策略的总结 Spark 性能优化指南——基础篇 Spark 性能优化指南——高...

  • 常用的后端性能优化六种方式:缓存化+服务化+异步化等

    性能优化专题 前端性能优化 数据库性能优化 jvm和多线程优化 架构层面优化 缓存性能优化 常用的后端性能优化六大...

  • webpack 性能优化

    webpack性能优化 开发环境性能优化 生产环境性能优化 开发环境性能优化 优化打包构建速度 优化调试功能 生产...

  • iOS性能优化 - 整理

    本文主要包含: 性能优化 - 卡顿性能优化 - 耗电优化性能优化 - APP启动优化安装包瘦身 一  性能优化 -...

  • 【React.js 20】React性能优化

    React性能优化 React性能优化主要分三块: React 组件性能优化 属性传递优化针对单组件性能优化,很多...

  • Android性能优化(下)

    Android性能优化 内存泄漏和性能优化方式Android性能优化(上)数据库优化和网络优化Android性能优...

网友评论

      本文标题:性能优化

      本文链接:https://www.haomeiwen.com/subject/nqzevttx.html