1、最小化的Dom访问,在一次Dom访问做尽可能多的操作;

2、使用局部变量存放指向反复访问的元素节点的Dom引用,原则上js代码中不应该重复获取同一个元素节点,除非它在运行过程中发生改变;

3、对元素集合(Html集合)小心处理,因为每次查询都会对底层的文档进行重新查询,在迭代处理中更好的的处理方式是缓存集合的length属性到一个局部变量中,当需要在迭代中使用元素集合,可以将该集合拷贝到数组中;

4、如果使用场景允许使用速度更快的API;

5、注意重绘和重排版,尽量降低重排版的次数,如果js代码中设计对大量的元素节点的几何操作建议创建一个文档片段(frame),对文档片段进行操作然后附加到原始的操作节点(最优解重排次数为1),批量修改风格,离线操作DOM树缓存并减少对布局信息的访问;

6、在js动画代码中为了避免动画节点集合属性改变引起整个页面的重新排版和渲染,建议对动画代码使用绝对坐标、拖放代理;

7、因为为元素绑定事件处理函数是一件极为消耗性能的事,而通常所有绑定事件处理函数的元素节点只有少部分触发,因此使用事件托管技术仅为触发最小化事件句柄是推荐的处理方式;

8、合理使用事件委托技术,利用事件冒泡,为层级尽可能高的元素添加事件处理程序,就可以管理子元素下同一类型的所有事件,而不必给每一个元素都绑定事件处理程序,占用的内存和访问dom节点的次数更少,可以大大提升性能。

javascript性能优化之Dom编程性能调优总结的更多相关文章

  1. Linux性能优化之磁盘I/O调优

    I/O指标已介绍,那么如何查看系统的这些指标呢? 一.根据工具查性能 二.根据性能找工具 三.磁盘I/O观察实例 iostat 是最常用的磁盘 I/O 性能观测工具,它提供了每个磁盘的 使用率 . I ...

  2. spark性能优化-JVM虚拟机垃圾回收调优

    1 2 3 4

  3. 前端性能优化--为什么DOM操作慢? 浅谈DOM的操作以及性能优化问题-重绘重排 为什么要减少DOM操作 为什么要减少操作DOM

    前端性能优化--为什么DOM操作慢?   作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩( ...

  4. Java性能优化,操作系统内核性能调优,JYM优化,Tomcat调优

    文章目录 Java性能优化 尽量在合适的场合使用单例 尽量避免随意使用静态变量 尽量避免过多过常地创建Java对象 尽量使用final修饰符 尽量使用局部变量 尽量处理好包装类型和基本类型两者的使用场 ...

  5. 前端性能优化--为什么DOM操作慢?

    作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩(css.js.图片皆可压缩) 样式表放头部 ...

  6. 【Java/Android性能优化1】Android性能调优

    本文参考:http://www.trinea.cn/android/android-performance-demo/ 本文主要分享自己在appstore项目中的性能调优点,包括同步改异步.缓存.La ...

  7. 前端性能优化工具--DOM Monster

    当我们开发web应用的时候,性能是一个永远不能回避的问题.其实对于DOM的性能调试也是一个不可或缺的过程.使用DOM monster你只需要添加到你的”书签中“,在任何需要调试的页面点击这个书签,它就 ...

  8. Android性能优化之UI渲染性能优化

    版权声明:本文出自汪磊的博客,未经作者允许禁止转载. 本篇博客主要记录一些工作中常用的UI渲染性能优化及调试方法,理解这些方法对于我们编写高质量代码也是有一些帮助的,主要内容包括介绍CPU,GPU的职 ...

  9. 如何利用 JuiceFS 的性能工具做文件系统分析和调优

    JuiceFS 是一款面向云原生环境设计的高性能 POSIX 文件系统,在 AGPL v3.0 开源协议下发布.作为一个云上的分布式文件系统,任何存入 JuiceFS 的数据都会按照一定规则拆分成数据 ...

随机推荐

  1. 浅谈cookie、session

    揭秘Cookie: cookie说的直白点就是保存在用户浏览器端的一个键值对,举个例子,你现在登录了京东商城,你把浏览器关闭之后,你再打开京东,你还是可以对你的账户继续操作,已经购买的商品,订单都是可 ...

  2. python--model进阶

    一.QuerySet 1.可切片 使用Python 的切片语法来限制查询集记录的数目 .它等同于SQL 的LIMIT 和OFFSET 子句.  >>> Entry.objects.a ...

  3. TCP如何保证可靠性

    如何保证可靠性? 1.校验和.在TCP的首部中有一个占据16为的空间用来放置校验和的结果. 这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化.如果收到段的检验和有差错,TCP将丢弃这个报文 ...

  4. PAT 1008 Elevator

    1008 Elevator (20 分)   The highest building in our city has only one elevator. A request list is mad ...

  5. 什么是CSS hack?

    1.什么是CSS hack? CSS hack是通过在CSS样式中加入一些特殊的符号,让不同的浏览器识别不同的符号(什么样的浏览器识别什么样的符号是有标准的,CSS hack就是让你记住这个标准),以 ...

  6. 【LeetCode】Valid Parentheses合法括号

    给定一个仅包含 '('.')'.'{'.'}'.'['.']'的字符串,确定输入的字符串是否合法. e.g. "()"."()[]{}"."[()]( ...

  7. random模块,time模块,os模块,sys模块

    一.random模块 >>> import random #随机小数 >>> random.random() # 大于0且小于1之间的小数 0.7664338663 ...

  8. nginx配置location总结及rewrite规则写法(1)

    1. location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为 ...

  9. JavaScript 上万条数据 导出Excel文件 页面卡死

    最近项目要js实现将数据导出excel文件,网上很多插件实现~~那个开心呀,谁知道后面数据量达到上万条时出问题:浏览器不仅卡死,导出的excel文件一直提示网络失败.... debug调试发现var  ...

  10. Python3 ElementTree.tostring()导致标签前辍变为ns0/ns1处理

    一.说明 python中我们经常借助xml.etree.ElementTree对xml进行处理,其中ElementTree.fromstring()将字符串格式化成et对象,ElementTree.t ...