我想看到不同的意见/意见.
我有Jquery通过ajax调用函数.它以两种方式加载数据:
> ajax脚本从相同的服务器加载JSON数据,然后使用JS来解析它并将其附加到html中.
> ajax脚本通过调用的PHP脚本直接加载完整的html /脚本,然后JS将其附加到html div.
我会假设#1更快,因为它加载一个基本的JSON数组,然后使用JS来解析它并附加到html.
意见?
谢谢!
有很多变数. #1可能更快,只要您的
JavaScript不是零件组装结果,并假定数据显着小于等效标记.如果您的结果是零碎的,或者数据不是比标记小得多,可能会更慢.它还取决于用户网络连接的速度与cpu和浏览器的速度(Chrome相当快,IE7相当慢)等.
原文链接:https://www.f2er.com/php/132926.html在零碎的事情上:例如,如果你正在加载一个200行的表,你正在建立这样的行:
// ...stuff that initializes `tableBody` and clears out old stuff... for (index = 0; index < stuff.length; ++index) { tr = $("tr"); tr.append("td").html(stuff[i].a); tr.append("td").html(stuff[i].b); tr.append("td").html(stuff[i].c); tableBody.append(tr); }
…那么这可能会比浏览器如何通过等效的标记火焰相当慢.
但是,如果你这样做更像这样:
markup = []; for (index = 0; index < stuff.length; ++index) { markup.push("<tr>"); markup.push("<td>" + stuff[i].a + "</td>"); markup.push("<td>" + stuff[i].b + "</td>"); markup.push("<td>" + stuff[i].c + "</td>"); markup.push("</tr>"); } tableBody.append(markup.join(""));
…您的形状更好,因为您可以通过浏览器快速解析HTML的能力获得最大限度的重用(从根本上说,浏览器的功能以及它们的优化).
乍看起来,似乎建立一个字符串,然后将其传递给浏览器可能比使用DOM方法或jQuery直接构建结构更快(甚至更快).但是,你想的越多,越明显(是的,我已经测试过)为什么会这样. DOM是一种抽象,浏览器必须映射到其内部结构,并且您对DOM方法的每个调用都跨越JavaScript和浏览器的DOM引擎之间的边界层.相比之下,添加到数组是快速的,连接是快速的(甚至字符串concat在现代浏览器上快速).将浏览器完整的字符串保持在最小层次之间,让浏览器可以直接构建其内部结构,而不必担心其DOM的等同事项(直到/除非您稍后再询问).几年前我测试过的最后一次,结果是戏剧性的.我应该用现在的浏览器再试一次;没有时间今天,虽然…