有不少同学在前端开发面试的时候会被问到性能优化的相关问题,做好优化是一件非常重要的事情,今天小千就来给大家介绍一下文档碎片的处理方式。

性能优化之文档碎片

一般情况下,在操作DOM结构的时候,经常会说非常消耗性能,原因是我们向DOM中添加新的元素,DOM会立刻更新。也就是添加一次更新一次,如果添加100个节点,那么就得更新100次,很浪费资源呀。

每次操作DOM节点插入时,浏览器会触发重排重绘,为了提高效率,要尽可能的减少重排重绘,即应该减少DOM节点的插入。有一种方法就是利用文档碎片去做。

文档碎片是一种虚拟的DOM节点,存在于内存中,跟实际的DOM节点之间没有关系,当我们需要给一个节点中插入多个子节点的时候,完全可以将多个子节点先插入到文档碎片中,所有子节点都放到文档碎片中后,再将文档碎片插入到实际的节点中,这样就减少了很多节点直接插入到父节点中的次数了,也就是本来多次触发重排重绘的操作,有了文档碎片中,只需要触发一次重排重绘了。

文档碎片创建:document.createDocumentFragment()

这个方法返回一个文档碎片,即虚拟DOM节点。对于文档碎片的插入操作,跟实际的DOM节点操作是一样的。

通过循环创建了5个p标签,每创建一个就将这个p标签。创建插入的节点较少时,页面会立马发生变化。但一旦创建插入的节点多了以后,这个过程就可能会十分缓慢,例如插入10000条。

当然也可以提前先创建一个空节点,将所有子节点插入到这个节点中,然后再将这个节点插入到目标节点中。

但这样会在list中多嵌套一个div标签。而文档碎片的意义跟这个div一样,但不会多嵌套标签。

经过测试,在各个浏览器下性能明显得到提高。

以上就是文档碎片处理的优化方案了,大家赶紧去自己的项目中测试一下吧。最后欢迎对web前端开发培训感兴趣的同学

本文来自千锋教育,转载请注明出处。

web前端分享:性能优化之文档碎片处理相关推荐

  1. JS性能优化之文档碎片-document.createDocumentFragment

    讲这个方法之前,我们应该先了解下插入节点时浏览器会做什么.          在浏览器中,我们一旦把节点添加到document.body(或者其他节点)中,页面就会更新并反映出这个变化,对于少量的更新 ...

  2. web前端页面性能优化SEO优化

    首先什么叫网站? 网站一般分为前端和后台.我们可以理解成后台是用来实现网站的功能的,比如:实现用户注册,用户能够为文章发表评论等等.而前端应该是属于功能的表现.并且影响用户访问体验的绝大部分来自前端页 ...

  3. web前端页面性能优化小结

    一.提倡前端开发工程师在书写xhtml的时候做到结构语义化. 结构中主要包括了head和body两个部分,但是我们经常说的是结构语义化主要是body中的标签,但是我在这里还是简单的说一下head,he ...

  4. Web前端的性能优化,需要怎么做?

    文末有福利 本文将分享一些前端性能优化的常用手段,包括减少请求次数.减小资源大小.各种缓存.预处理和长连接机制,以及代码方面的性能优化等方面. base64:尤其是在移动端,小图标可以base64(w ...

  5. web前端页面性能优化(提升页面加载速度)

    我们都知道,对于web应用来说性能很重要,然而性能的优化相关知识非常庞大而复杂,对于性能优化我们需要做些什么,或者瓶颈是什么通常是我们不太了解的.(当然技术大牛除外) 通过查阅相关资料,了解到了一些关 ...

  6. JQuery创建文档碎片

    (1)文档碎片可以提高DOM的操作性能.比如要插入一万个li标签,如果没有文档碎片,就必须插入一个然后页面渲染一次,插入完全部就要渲染一万次,太损耗性能.利用文档碎片,可以先把需要修改的全部放入文档碎 ...

  7. web项目使用OpenOffice实现前端在线预览office文档(超详细)

    超详细的OpenOffice实现前端在线预览office文档记录 最近搞一个数字化共享平台,是一个java web项目,使用框架ssm,其中项目有一个需要在线预览PDF.excle.ppt.word文 ...

  8. H5缓存机制浅析-移动端Web加载性能优化【干货】

    转载:H5缓存机制浅析-移动端Web加载性能优化[干货] 作者:贺辉超,腾讯游戏平台与社区产品部 高级工程师 目录 1 H5缓存机制介绍 2 H5缓存机制原理分析 2.1 浏览器缓存机制 2.2 Do ...

  9. 前端页面性能优化 - 字体加载优化

    相比于英文的字库来说,中文字库的体积非常之大,小则1M,动辄几十 M 的体积非常常见.所以在前端页面性能优化中,字体加载的优化就显得尤为重要.阅读了相关的知识和文章,在研究了市面上字体加载方案之后,我 ...

最新文章

  1. 金蝶应收应付模块流程_金蝶KIS专业版应收应付的系统亮点功能
  2. linux系统安装金蝶_linux 操作系统安装配置vnc
  3. GlusterFS架构与维护
  4. Matlab画图技巧之保存超大体积图
  5. 小米12系列首发!高通骁龙898有望11月30日亮相
  6. 编程之美——数字哑谜
  7. 麦克纳姆轮全向移动机器人自旋转运动分析
  8. bootstrap-table为空_JS组件Bootstrap Table使用方法详解
  9. 软件介绍——SyncToy 微软官方文件同步工具
  10. surfacepro3运行C语言,【微软 Surface PRO3使用总结】C面|D面|噪音|材质_摘要频道_什么值得买...
  11. 通过Wachete实时监控网站更新
  12. 什么是 web API? DOM和BOM
  13. mysql添加字段语句
  14. TikTok与抖音有什么不同?为什么TikTok被称为“海外版抖音”?
  15. ArcMap地理配准
  16. 配置OSPF实现pc机互通小实验
  17. 朱光领衔百度金融高管团队曝光,要憋大招的节奏?
  18. 项目管理9大知识思维导图-精减版+教你如何绘制专属思维导图
  19. 西邮linux兴趣小组2019,2020补纳面试题
  20. linux下grub引导windows,Grub引导Linux或者windows系统

热门文章

  1. 直播预告:GAN在网络特征学习中的应用 | PhD Talk #23
  2. Spring AOP XML配置及注解配置
  3. linux shell 域名 ip,Shell脚本一种检查Linux中域名和IP地址所有权信息、检查多个域名的到期日期工具...
  4. Spring Boot-自动配置之底层原理
  5. sleep方法和wait方法的区别
  6. Ehab and the Expected XOR Problem
  7. crt无法网络连接linux开发板,securceCRT网络连接不正常解决途径
  8. 4j 设置日志保存天数_MySQL中的这几类日志,你一定要知道
  9. css img 适配尺寸_如何解决img标签下面的小空隙(附详细视频教程)
  10. 【算法学习笔记】堆排序和归并排序、其他几种排序的代码实现、比较和应用(习题)