MKN*_*ons 10 javascript php ajax jquery
我希望看到不同的意见/看法.
我让Jquery通过ajax调用一个函数.它以两种方式加载数据:
ajax脚本从同一服务器加载JSON数据,然后使用JS解析它并将其附加到html中.
ajax脚本通过调用的php脚本直接加载完整的html /脚本设置,然后JS将其附加到html div.
我假设#1更快,因为它加载了一个基本的JSON数组,然后使用JS来解析它并附加到html.
意见?
谢谢!
T.J*_*der 12
有很多变数.#1 可能更快,只要您的JavaScript没有组装结果零碎并假设数据明显小于等效标记.如果您正在逐步组装结果,或者数据不比标记小得多,则可能会慢一些.它还取决于用户网络连接的速度与CPU和浏览器的速度(Chrome相当快,IE7相当慢)等.
零碎的事情:例如,如果您正在加载一个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);
}
Run Code Online (Sandbox Code Playgroud)
...那么与浏览器如何通过等效标记相比,这可能会相当慢.
但是,如果您更喜欢这样做:
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(""));
Run Code Online (Sandbox Code Playgroud)
...你处于更好的状态,因为你可以通过浏览器快速解析HTML的能力获得最大程度的重用(从根本上说,这是浏览器的功能,以及它们的优化内容).
乍一看,有点反直觉的是,构建字符串然后将其交给浏览器可能比直接使用DOM方法或jQuery构建结构更快(甚至更快).但你想的越多,它就越明显(是的,我已经测试过了)为什么会这样.DOM是浏览器必须映射到其内部结构的抽象,并且您对DOM方法的每个调用都跨越JavaScript和浏览器的DOM引擎之间的边界层.相比之下,添加到数组的速度很快,join速度很快(即使在现代浏览器中字符串连接速度很快).将浏览器设置为完整的字符串可以使层之间的行程保持最小,并让浏览器直接构建其内部结构,而不必担心它们的DOM等价物(直到/除非您稍后要求它们).我最后一次测试这是几年前,结果是戏剧性的.我应该用当前的浏览器再试一次; 今天没时间,但......
| 归档时间: |
|
| 查看次数: |
4924 次 |
| 最近记录: |