Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我是否应该关心这种优化- jQuery - DOM更改

我是否应该关心这种优化- jQuery - DOM更改
EN

Stack Overflow用户
提问于 2011-07-23 07:35:21
回答 2查看 87关注 0票数 0

我有一个简单的问题,如果循环在外部,是否值得“缓存”DOM更改(对于循环,..)如果我有1000个即将到来的变化,它会带来巨大的性能提升(据我所知,不是我自己测量的),但如果我只替换这样的内容呢?

代码语言:javascript
运行
AI代码解释
复制
jQuery("#subMenu").html( jQuery( html ).find( "#subMenu" ).html() );
jQuery("#pageMain").html( jQuery( html ).find( "#pageMain" ).html());
jQuery("#text").html( jQuery( html ).find( "#text" ).html());   

我能做这些

代码语言:javascript
运行
AI代码解释
复制
var cachedDOM = jQuery("body").html(); //edited
jQuery(cachedDOM).find("#pageMain").html( jQuery( html ).find( "#pageMain" ).html());
jQuery("body").html(cachedDOM);

它可能会更快,但我需要重新绑定所有事件,依此类推。在这种情况下缓存DOM真的更好吗?我不这么认为,但我想让页面尽可能快(特别是在较旧的IEs中)

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-23 07:37:56

总是使用JQuery的内置选择器,而不是尝试“缓存”和遍历变量。无论如何,从身体开始遍历是违反直觉的。

证明选择器比伪缓存快得离谱:http://jsperf.com/pseudo-dom-cache

票数 1
EN

Stack Overflow用户

发布于 2011-07-23 07:51:37

你的第二个代码甚至都不能生成.

$var cachedDOM = jQuery("body").html();

我想你的意思是

var $cachedDOM = jQuery("body").html();

然后这一行:

jQuery(cachedDOM)是相对较慢的

您在该行上有效地克隆了web页面的整个HTML,因此您可以像搜索普通DOM一样对其进行搜索。使用你的第一种方法会快很多。我认为你正在寻找的那种缓存,它确实可以提供可变的速度提升,类似于:

代码语言:javascript
运行
AI代码解释
复制
var $body = jQuery("body");
$body.find("#pageMain").html($body.find("#pageMain").html());

速度的提升取决于选择器的复杂程度。例如,由于大多数版本的IE没有可供jQuery利用的document.getElementsByClassName()函数,因此包含大量类的选择器将会相当慢,因此缓存结果是一个好主意。这方面的一个例子是:jQuery("div.left-column.highlighted li.link-list a.active");,如果你在IE中用一个相当复杂的DOM运行1000次这样的行,与缓存一次并使用缓存999次相比,你可以得到显着的速度差异。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6798994

复制
相关文章
Audition工具在录音测试中的应用
Adobe Audition(简称Au,原名Cool Edit Pro)是由Adobe公司开发的一个专业音频编辑和混合环境。Audition为在照相室、广播设备和后期制作设备方面工作的音频和视频专业人员设计,可提供先进的音频混合、编辑、控制和效果处理功能。
用户5521279
2021/02/12
3.2K0
Audition工具在录音测试中的应用
敏捷看板工具在敏捷项目管理中的应用
Scrum是迭代式增量软件开发过程,是敏捷方法论中的重要框架之一,通常用于敏捷软件开发。
一只爱生气
2023/06/27
2480
React中diff算法的理解
diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结构进行重绘与回流,而diff算法能够使得操作过程中只更新修改的那部分DOM结构而不更新整个DOM,这样能够最小化操作DOM结构,能够最大程度上减少浏览器重绘与回流的规模。
WindRunnerMax
2021/05/20
1.1K0
Linux中的Diff和Patch
本文主要记录两个命令的学习情况:diff 和 patch。diff 和 patch 是一对工具,使用这对工具可以获取更新文件与历史文件的差异,并将更新应用到历史文件上。在数学上说,diff就是对两个集合的差运算,patch就是对两个集合的和运算。
大江小浪
2018/07/24
2.9K0
Linux中的Diff和Patch
Vue中diff算法的理解
diff算法用来计算出Virtual DOM中改变的部分,然后针对该部分进行DOM操作,而不用重新渲染整个页面,渲染整个DOM结构的过程中开销是很大的,需要浏览器对DOM结构进行重绘与回流,而diff算法能够使得操作过程中只更新修改的那部分DOM结构而不更新整个DOM,这样能够最小化操作DOM结构,能够最大程度上减少浏览器重绘与回流的规模。
WindRunnerMax
2020/08/27
7140
React-diff原理及应用
React通过引入Virtual DOM的概念,极大地避免无效的Dom操作,已使我们的页面的构建效率提到了极大的提升。但是如何高效地通过对比新旧Virtual DOM来找出真正的Dom变化之处同样也决定着页面的性能,React用其特殊的diff算法解决这个问题。Virtual DOM+React diff的组合极大地保障了React的性能,使其在业界有着不错的性能口碑。diff算法并非React首创,React只是对diff算法做了一个优化,但却是因为这个优化,给React带来了极大的性能提升,不禁让人感叹React创造者们的智慧!接下来我们就探究一下React的diff算法。
xiaofeng123aa
2022/10/10
7530
TiDB Online DDL 在 TiCDC 中的应用丨TiDB 工具分享
TiCDC 作为 TiDB 的数据同步组件,负责直接从 TiKV 感知数据变更同步到下游。其中比较核心的问题是数据解析正确性问题,具体而言就是如何使用正确的 schema 解析 TiKV 传递过来的 Key-Value 数据,从而还原成正确的 SQL 或者其他下游支持的形式。本文主要通过对 TiDB Online DDL 机制原理和实现的分析,引出对当前 TiCDC 数据解析实现的讨论。
PingCAP
2022/03/03
5830
关键词采集工具在市场调研中的应用
作为一名市场调查人员,我们需要了解目标用户的行为和偏好,以便我们能够制定相应的市场调查方案。我们可以利用关键词采集工具来了解目标用户的行为和偏好,这些工具可以帮助我们了解用户在搜索引擎上使用哪些关键词和短语,以及他们在社交媒体上的行为和偏好。以下是我总结的十个方面因素:
小胡爱学习
2023/04/05
4330
关键词采集工具在市场调研中的应用
工具:解决Github挂图及龟速访问
Tip:推荐 SwitchHosts[3] 工具管理 hosts。根据自己的系统选择对应的版本进行下载。
好好学SLAM
2021/05/28
7490
浅谈接口diff设计实现应用
1 背景 随着业务量和业务复杂度度增加,每次业务迭代都需要考虑业务影响域进行回归,效率低 业务重构导致覆盖度一定程度上不完全,质量不高 tcp接口众多,http接口更接近业务场景 因为上述业务特点,故选择了接口diff的方式改进测试过程中效率和质量问题 2 实现目标 根据环境数据配置进行接口数据对比,找出结果中的差异 用例集成,使用csv文件管理用例case,支持不同业务线用例统一管理 jenkins集成,自动化下载代码、执行用例、生成测试报告 入口集成,统一集成到开放平台中形成数据闭环,可选择具体业务线
雷子
2021/03/15
1K0
浅谈接口diff设计实现应用
Vue中的diff算法深度解析
模板tamplate经过parse,optimize,generate等一些列操作之后,把AST转为render function code进而生成虚拟VNode,模板编译阶段基本已经完成了,那么这一章,我们来探讨一下Vue中的一个算法策略--dom diff 首先来介绍下什么叫dom diff
yyds2026
2022/10/21
8130
VUE中diff比较
要知道渲染真实DOM的开销是很大的,比如有时候我们修改了某个数据,如果直接渲染到真实dom上会引起整个dom树的重绘和重排,有没有可能我们只更新我们修改的那一小块dom而不要更新整个dom呢?diff算法能够帮助我们。
全栈程序员站长
2021/07/01
7090
React源码中的dom-diff
这一章就来讲讲React在协调阶段的beginWork里面主要做的事情 -- dom diff。
夏天的味道123
2022/10/21
4500
免费好用的Diff和Merge工具大总结
总结:比较下来:diffmerge和P4merge最好用,kdiff比较专业些,支持自动merge。
编程随笔
2019/09/11
4.2K0
免费好用的Diff和Merge工具大总结
cookie在爬虫中的应用
当爬取需要登录之后才可以获取的页面时,我们就可以借助cookie来实现。cookie是一种存储在本地浏览器中的用户认证信息,具体表现为一串字符串。当我们在浏览器中登录之后,可以通过F12查看对应的cookie信息,示例如下
生信修炼手册
2020/11/02
1.6K0
cookie在爬虫中的应用
EDI在物流中的应用
EDI最初是在由美国企业应用在企业间订货业务活动的电子数据交换系统,其后EDI的应用范围从订货业务向其他业务扩展,如POS销售信息传送业务、库存管理业务、发货送货信息和支付信息的传递业务等。
EDI顾问-杨欢
2019/12/31
2.1K0
HTTP在abap中的应用
CALL METHOD cl_http_client=>create_by_url EXPORTING url = w_string IMPORTING client = http_client EXCEPTIONS argument_not_found = 1 plugin_not_active = 2 internal_error = 3 O
matinal
2020/11/27
1.4K0
ZooKeeper在HBase中的应用
HBase主要用ZooKeeper来实现HMaster选举与主备切换、系统容错、RootRegion管理、Region状态管理和分布式SplitWAL任务管理等。 HMaster选举与主备切换 HMaster选举与主备切换的原理和HDFS中NameNode及YARN中ResourceManager的HA原理相同。 系统容错 当HBase启动时,每个RegionServer都会到ZooKeeper的/hbase/rs节点下创建一个信息节点(下文中,我们称该节点为”rs状态节点”),例如/hbase/rs/
加米谷大数据
2018/06/04
2.4K0
RandomWalk在GraphEmbedding中的应用
从某个节点的邻居中随机挑选一个节点作为下一跳节点的过程称为随机游走(Random Walk,下文简称游走),多次重复游走过程可产生游走序列。
锅逗逗
2022/08/01
1.1K0
RandomWalk在GraphEmbedding中的应用
javamelody在spirngmvc中的应用
JavaMelody是一款能够监测Java或Java EE应用程序的服务器,它以图表的方式显示:Java内存和Java CPU使用情况,用户Session数量,JDBC连接数,和http请求、sql请求、jsp页面与业务接口方法(EJB3、Spring、 Guice)的执行数量,平均执行时间,错误百分比等。图表可以按天,周,月,年或自定义时间段查看。
zhangheng
2020/04/28
1.4K0

相似问题

无法将我的汞储存库从龟体内推到git。

15

无法解析龟svn中的diff修改头“不存在”?

21

git忽略diff工具选项-启动股票diff工具

13

在SourceTree中永久设置diff工具

10

diff中的工具剥离空格

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档