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”) 进行一系列的操作的时候可以使用以下步骤来减少重排和重绘:使元素脱离文档流,对其应用多重改变,把元素带回文档中。 步骤二中有三种方法:隐藏元素,应用修改,重新显示;使用文本片段;将原始元素拷贝到一个脱离文档流的节点中,修改副本,完成后再替换原始元素。第二种方法最好。

转载于:https://www.cnblogs.com/CloverH/p/5246633.html

前端性能优化之DOM(三)相关推荐

  1. 在dom最前面插入_前端性能优化之dom编程

    写在前面 总所周知,在前端的日常里面,采用JS操作DOM节点的情况占据了大多数.虽然现在有MVVM主流框架代替我们做了这些事情,但充分理解在DOM操作各种损耗问题,将有助于让我们更加理解和优化问题. ...

  2. 前端性能优化的三个维度

    前端性能优化可以分为三个level:静态资源优化.接口访问优化.页面渲染速度优化,在操控门槛上依次递增,优化效果上越发没有这么明显,所以很多小团队只会做到了第一个level 追求极致的前端性能体验,提 ...

  3. 前端性能优化(重点)

    前端性能优化可以分为三个level:静态资源优化.接口访问优化.页面渲染速度优化 一.静态资源优化 减少静态资源的加载时间,主要包括html.css.js和图片文件,静态资源的加载时间是前端性能最大的 ...

  4. 前端性能优化总结/懒加载、函数节流、优化dom操作、雪碧图、合并文件

    1.减少 HTTP 请求数量 在浏览器与服务器进行通信时,主要是通过 HTTP 进行通信.浏览器与服务器需要经过三次握手,每次握手需要花费大量时间.而且不同浏览器对资源文件并发请求数量有限(不同浏览器 ...

  5. [译] 2019 前端性能优化年度总结 — 第三部分

    原文地址:Front-End Performance Checklist 2019 - 3 原文作者:Vitaly Friedman 译文出自:掘金翻译计划 本文永久链接:github.com/xit ...

  6. 深度讲解:web前端性能优化

    一.课程简介: 1.课程大纲 涉及到的分类 网络层面 构建层面 浏览器渲染层面 服务端层面 涉及到的功能点 资源的合并与压缩 图片编解码原理和类型选择 浏览器渲染机制 懒加载预加载 浏览器存储 缓存机 ...

  7. 移动H5前端性能优化指南[转]

    移动H5前端性能优化指南 米随随2015.01.23 移动H5前端性能优化指南 概述 1. PC优化手段在Mobile侧同样适用 2. 在Mobile侧我们提出三秒种渲染完成首屏指标 3. 基于第二点 ...

  8. WEB前端性能优化小结

    1. 请减少HTTP请求 基本原理: 在浏览器(客户端)和服务器发生通信时,就已经消耗了大量的时间,尤其是在网络情况比较糟糕的时候,这个问题尤其的突出. 一个正常HTTP请求的流程简述:如在浏览器中输 ...

  9. 前端服务器获取js文件偶尔慢_我所认识的前端性能优化

    现象: 用户体验差 网页太卡打不开(卡.慢) 服务器带宽流量(成本) 服务器压力 从哪处理:各处的缓存 地址缓存 减少DNS的解析请求.预解析DNS(不是"解析DNS") TCP缓 ...

最新文章

  1. Numpy入门教程:07. 随机抽样
  2. 传输层端口号的范围是多少?被分为哪两部分_Cu2ZnSnS4纳米晶做空穴传输层经配体改性将低温可喷涂碳电极基钙钛矿太阳能电池的性能提高到17.71...
  3. hive 的udf 函数使用
  4. Laravel3 学习笔记
  5. vue实现查询多条记录_sql:多表查询
  6. 如何以及为什么序列化Lambda
  7. 最大化窗口设置_打开表格总是默认窗口最小化?适用Word、PPT等其他应用
  8. java forward 修改请求参数_聊聊springboot session timeout参数设置
  9. 国内MCU厂商也开始卷了
  10. 计算机应用技术爱岗敬业,高职专业人才培养方案(计算机应用技术).doc
  11. ionic 侧栏菜单用法
  12. vue父组件变量传递子组件_Vue2.x中的父组件数据传递至子组件
  13. KNX数据格式,温度转换
  14. 1×pbs缓冲液配方_pbs配方_1xpbs配方_pbs缓冲液配制
  15. c语言中fprintf的作用,C语言中fprintf函数介绍
  16. IP 地址分为哪几类?
  17. 查看变量内存的python内置函数是_这68个Python内置函数,建议你吃透
  18. kettle 在Linux下执行kjb
  19. 【AI人工智能学习】GitHub 上适合初学者的 10 个最佳开源 AI 项目
  20. Facial Emotion Recognition: State of the Art Performance on FER2013

热门文章

  1. java.lang.NoSuchMethodError: android.os.Bundle.getString
  2. Nokia BH-700及三星wep250这两款蓝牙耳机和电脑配对的方法
  3. 通过SQL Server 2008 访问MySQL
  4. 备忘--Sinfors 设备出厂IP
  5. Turbo C 3.0安装及使用说明
  6. 【知识发现】基于用户的协同过滤推荐算法python实现
  7. Leetcode 105. 从前序与中序遍历序列构造二叉树 解题思路及C++实现
  8. 计算机二级考试vb内容,计算机二级考试VB重点内容.doc
  9. 转载:分享一下免费的ppt网站(好看,免费)
  10. Python 技术篇-PyQt5动画功能演示,组件移动、尺寸改变动画演示