小编wro*_*man的帖子

Fetch 与 ajax 与 XMLHttpRequest 为什么 Fetch 快得多?

好吧,最近几天我一直在优化客户表。

有很多 10k+ 的客户端,显然该表需要很长时间才能加载。前端团队完成了分页+过滤器+重新排序,我希望保持这种方式。

所以我开始尝试通过 AJAX 注入渲染的 HTML,这显然很糟糕。速度可以接受,但是内存消耗巨大,之后表速度非常慢。

之后,我尝试通过 AJAX 以 JSON 格式加载数据,并使用 javascript 附加到表中。

我尝试了多种方法来执行此操作,最好的方法是一次处理 500-1000 个客户端,但完成该表需要 30 多秒,并且在此期间页面速度很慢。

我坚持不懈,并设法在后端节省了几秒钟的时间,但是,如果我只是在浏览器上加载 API,结果会立即出现,并且每次调用不会花费 10 秒以上的时间。

这是当我尝试 XMLHttpRequest 时,它产生了或多或少相同的结果。然后我发现了 fetch,这太神奇了。使用 fetch 现在只需不到 3 秒即可完全加载表。

所以我的问题是,为什么?是的,如果我深入研究文档,我可能会找出原因,但我只是非常忙碌并且非常好奇,肯定有人已经知道这一点。

PS如果有人对我正在使用的代码感到好奇:

最佳解决方案(获取)

for (var jj of {{ ret|safe }}) {
          fetch("/clients/table/build1/?start="+String(jj)).then(function (response) {
              response.json().then(function (request) {
                  for (let i = 0; i < request['results'].length; i++) {
                  $("#myAllClient_1").DataTable().row.add(<<CLIENT DATA>>)
                  }
            $("#myAllClient_1").DataTable().draw(false);
            <<bit more code>>
Run Code Online (Sandbox Code Playgroud)

慢ajax代码:

$.ajax({
          method: "GET",
          dataType: "JSON",
          url: "/clients/table/build1/?start=" + snum,
          success: function (data) { …
Run Code Online (Sandbox Code Playgroud)

javascript ajax performance jquery fetch-api

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

ajax ×1

fetch-api ×1

javascript ×1

jquery ×1

performance ×1