php – 什么更快? Ajax加载JSON或Ajax加载完整输出

前端之家收集整理的这篇文章主要介绍了php – 什么更快? Ajax加载JSON或Ajax加载完整输出前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想看到不同的意见/意见.

我有Jquery通过ajax调用函数.它以两种方式加载数据:

> ajax脚本从相同的服务器加载JSON数据,然后使用JS来解析它并将其附加到html中.
> ajax脚本通过调用PHP脚本直接加载完整的html /脚本,然后JS将其附加到html div.

我会假设#1更快,因为它加载一个基本的JSON数组,然后使用JS来解析它并附加到html.

意见?

谢谢!

有很多变数. #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);
}

…那么这可能会比浏览器如何通过等效的标记火焰相当慢.

但是,如果你这样做更像这样:

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的等同事项(直到/除非您稍后再询问).几年前我测试过的最后一次,结果是戏剧性的.我应该用现在的浏览器再试一次;没有时间今天,虽然…

原文链接:https://www.f2er.com/php/132926.html

猜你在找的PHP相关文章