Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文本节点的大小是否会影响DOM遍历的速度?_Javascript_Performance_Dom - Fatal编程技术网

Javascript 文本节点的大小是否会影响DOM遍历的速度?

Javascript 文本节点的大小是否会影响DOM遍历的速度?,javascript,performance,dom,Javascript,Performance,Dom,我有一个相当大的单页应用程序,大约800K。大约500K是发送到客户机的数据。我正在考虑在标记的头部移动一些只是json字符串的元素 当浏览器遍历DOM时,它是否也会查看标记(在这种情况下没有好处)遍历是否只发生在标记内部?当使用文档时。querySelectorAll(“某些选择器示例”)也会考虑头部的元素。这可以通过使用以下方法轻松解决: document.body.querySelectorAll("...") 这同样适用于getElementsByTagName,getElements

我有一个相当大的单页应用程序,大约800K。大约500K是发送到客户机的数据。我正在考虑在
标记的头部移动一些只是json字符串的元素


当浏览器遍历DOM时,它是否也会查看
标记(在这种情况下没有好处)遍历是否只发生在
标记内部?

当使用
文档时。querySelectorAll(“某些选择器示例”)
也会考虑头部的元素。这可以通过使用以下方法轻松解决:

document.body.querySelectorAll("...")
这同样适用于
getElementsByTagName
getElementsByClassName
querySelector

但是不要使用
getElementById
,因为id在文档中必须是唯一的,所以限制上下文是没有意义的

顺便说一下,文本也是一种节点类型<代码>500kb生成以下DOM树:

SCRIPT
    #text

如果可以的话,我会尝试重新构造数据从服务器返回的方式,而不是将内容转移到浏览器可能解析或可能无法解析的位置

也许有一个只返回基本信息的快速响应,然后对另一个请求有一个更完整的响应

我也有一个web服务,可以创建大量的数据800K对我来说也是一个限制,但我已经将端点设置得更具体一些,以限制该数据

干杯
格伦

那么元素是在头部还是在身体里没有区别?@frenchie不,这不重要。当放在头部时,页面看起来“可用”可能需要更多的时间。如果放在正文中,浏览器将能够处理一些已经加载的内容。@frenchie顺便说一句,这是一个JSPerf。它没有显示出显著的性能差异:在遍历DOM时,脚本/div/which标记中的文本大小无关紧要(例如,通过应用选择器查询)。这是一个文档对象模型,您不需要进行字符串搜索:-)@Bergi,想象一下大约5000个div,其中一些具有10个层次结构,正在被遍历和修改。您说您的数据主要是JSON字符串,而不是一个复杂的页面?两者都有:大量JSON数据和大量div,大部分是在运行时创建的为什么有包含JSON内容的div?我想他们根本不会被展示。您不应该有一个包含数据的大JSON文件,然后在运行时创建一个独立的可视化吗?