好吧,最近几天我一直在优化客户表。
有很多 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)