0

从性能的角度来看,我想了解从服务器加载一段 JS 代码(选项 #1)与在客户端加载同一段代码(选项 #2)之间的区别。

选项 #1:服务器在标签中发送 JS 代码。

选项 #2:服务器将代码作为 JS 字符串 ( var jsCode = '[code]') 发送出去。在浏览器上,加载触发后,会创建一个脚本节点并设置 .text 属性 ( scriptNode.text = jsCode)

scriptNode = document.createElement('script');
document.body.appendChild(scriptNode);
scriptNode.setAttribute('type', 'text/javascript');
scriptNode.text = jsCode;

从性能角度来看,一种选择是否比另一种更好?例如,在选项 #2 中,我们需要做额外的工作来创建脚本节点并将其添加到 DOM 树中。除了这些之外,性能(时间和内存方面)是否有任何差异?

4

1 回答 1

0

除非有一些我不知道的魔法,否则我认为选项 2 不可能更快 - 您仍然通过网络发送相同数量的数据,您仍在解析脚本块,并且您' 甚至通过修改 DOM(这当然会使用一些内存)来添加额外的步骤。

但是,如果您异步加载脚本,选项 2 的性能可能会有所提高因为这不会像内联脚本块那样在解析期间阻塞页面呈现。

于 2012-08-29T12:09:12.270 回答