前端性能优化之DOM(三)

DOM和JavaScript在浏览器中是独立实现的;
IE :
DOM—> 一个名为mshtml.dll的库(内部称为Trident)
JavaScript—> 它的实现名为JScript,位于jscript文件中

Safaria :
JavaScript—> 由独立的JavaScriptCore引擎(最新版本名字为SquirrelFish)实现
DOM—> 使用webkit的WebCore实现

Chorme:
JavaScript—> V8
DOM—> 使用webkit的WebCore

FF:
JavaScript —> SpiderMonkey(最新版本为TraceMonkey)
DOM—> Gecko的渲染引擎
两个相互的功能只要通过接口彼此连接就会产生消耗。因此如果多次访问某个DOM节点,就需要将其缓存在局部变量,以此达到提高性能的效果。

DOM访问与修改:
用innerHTML代替使用DOM创造节点的方法;
用局部变量缓存DOM节点,以此减少节点的访问,提高性能;
用element.cloneNode()的方法代替document.createElement();
若使用元素集合的length,将其保存在局部变量;
使用nextSibling代替childNodes遍历节点(老浏览器中更快);
使用children代替childNode遍历子节点;
使用querySeletorAll()和querySeletor()代替document.getElementsByTagName()和
document.getElementById();

重绘和重排:
重排:浏览器会使渲染树中受到影响的部分失效,并重新构造渲染树。
例如:添加删除可见的DOM元素;元素位置,尺寸改变;内容改变;浏览器窗口尺寸改变。
重绘:完成重排后,浏览器会重新绘制收到影响的部分到屏幕中。

1、避免或缓存使用最新的布局信息:偏移量(offsets),滚动位置(scroll values),计算出的样式指(getComputedStyle).
2、和并多次对DOM的操作,例如cssText(注:它会覆盖已保存的样式,可使用cssText+=“value”)
进行一系列的操作的时候可以使用以下步骤来减少重排和重绘:使元素脱离文档流,对其应用多重改变,把元素带回文档中。 步骤二中有三种方法:隐藏元素,应用修改,重新显示;使用文本片段;将原始元素拷贝到一个脱离文档流的节点中,修改副本,完成后再替换原始元素。第二种方法最好。

时间: 2024-10-06 08:21:45

前端性能优化之DOM(三)的相关文章

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

作为一个前端,不能不考虑性能问题.对于大多数前端来说,性能优化的方法可能包括以下这些: 减少HTTP请求(合并css.js,雪碧图/base64图片) 压缩(css.js.图片皆可压缩) 样式表放头部,脚本放底部 使用CDN(这部分,不少前端都不用考虑,负责发布的兄弟可能会负责搞好) 缓存…… 等等…… 有兴趣的同学,可以自行搜索雅虎关于前端优化的十四条规则.但这些规则当中,有多少是需要前端工程师付诸实践的?就我来说,CDN.缓存的设置,就是不需要我去关心的(作为一个苦逼外包,是没有权限去生产环

前端性能优化:DOM操作性能优化建议

其实在web开发中,单纯因为js导致性能问题的很少,主要都是因为DOM操作引起的. 1查找元素的优化 2改变DOM,包括添加,修改,删除DOM 3改变DOM的样式类等 4批量修改DOM 5减少iframe 6样式放在header中,脚本放在关闭标签</body>之前 1查找元素的优化   因为ID是唯一的,也有原始的方法,因此使用ID查找元素是最快的,其次的是根据类和类型查找元素,通过属性查找元素是最慢的,因此应该尽可能的通过ID或者类来查找元素,避免通过类来查找元素. 2改变DOM,包括添加

前端性能优化(DOM篇)

原文链接:https://segmentfault.com/a/1190000000490322 缓存DOM对象 JavaScript的DOM操作可以说是JavaScript最重要的功能,我们经常要根据用户的操作来动态的增加和删除元素,或是通过AJAX返回的数据动态生成元素.比如我们获得了一个很多元素的数组data[],需要将其每个值生成一个li元素插入到一个id为container的ul元素中,最简单(最慢)的方式是: var liNode, i, m; for (i = 0, m = dat

前端性能优化:DOM操作标签对性能的影响

给DOM添加相同的数量的字符串,到底什么会相应性能呢? 测试代码: var length = 300000; function Test1() { var t = [length]; for (var i = 0; i < length; i++) { t.push("<br/>" + i.toString()); } var date1 = new Date().getTime(); document.getElementById("div1")

web前端性能优化

前言:  在同样的网络环境下,两个同样能满足你的需求的网站,一个“Duang”的一下就加载出来了,一个纠结了半天才出来,你会选择哪个?研究表明:用户最满意的打开网页时间是2-5秒,如果等待超过10秒,99%的用户会关闭这个网页.也许这样讲,各位还不会有太多感触,接下来我列举一组数据:Google网站访问速度每慢400ms就导致用户搜索请 求下降0.59%;Amazon每增加100ms网站延迟将导致收入下降1%;雅虎如果有400ms延迟会导致流量下降5-9%.网站的加载速度严重影响了用户体验,也决

CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

目录 一.浏览器兼容 1.1.概要 1.2.浏览器内核 1.3.浏览器市场份额(Browser Market Share) 1.4.兼容的一般标准 1.5.CSS Reset 1.6.CSS Hack 1.6.1.条件注释法 1.6.2.样式内属性标记法 1.6.3.选择器前缀法 1.7.文档模式 (X-UA-Compatible) 1.8.javascript兼容 二.前端性能优化 2.1.概要 2.2.减少HTTP请求数量 2.2.1.图片地图 2.2.2.精灵图片(Sprite) 2.2.

前端性能优化归纳总结

关于前端性能优化的总结,随处都可以看到这方面的文章,而优化方法,也无外乎那些"固定"方面,当然,有些方面已经过时,所以,在这里,我自己也总结一遍吧,加深理解,也希望是一种不同的总结形式. -----------------------正文总这里开始------------------------------------ 一.什么是前端性能优化(what)? 从用户访问资源到资源完整的展现在用户面前的过程中,通过技术手段和优化策略,缩短每个步骤的处理时间从而提升整个资源的访问和呈现速度.

前端性能优化分析

说道性能优化,相信大家都看过网页的源代码,和我们平常写的可能有些不同,在审查元素里面看到的代码都是经过压缩过的,这也是我们前端优化的一种,在一些比较大的公司会使用到grunt来进行代码的压缩或者是合并,在一些小的公司就会使用一些别的方法,下面我就简单介绍一下比较常见的前端优化. 在这里我们主要分为三个方向来介绍,首先我们要介绍的就是网络方面的,这个主要分为DNS的解析,CDN的加速,和延迟加载以及预加载在这里的cdn主要是借助于一些大型公司的服务器,进行加载,这样会提升加载的效率. 第二个就是我

Web前端性能优化的9大问题

1.请减少HTTP请求基本原理: 在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出. 一个正常HTTP请求的流程简述:如在浏览器中输入"www.xxxxxx.com"并按下回车,浏览器再与这个URL指向的服务器建立连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求的信息后再返回相应的信息,浏览器接收到来自服务器的应答信息后,对这些数据解释执行. 而当我们请求的网页文件中有很多图片.CSS.JS甚至音乐等信息时,将