繁体   English   中英

如何在浏览器中预取一个返回JSON格式数据的ajax调用

[英]How to prefetch an ajax call that returns a JSON format data in the browser

我有一个用例,其中在页面加载时我进行了多个ajax调用。 初始负载向服务器发送ajax请求,该请求以JSON格式获取数据,随后的用户单击时,将触发其他ajax调用,这些调用使数据库调用在服务器端计算JSON,浏览器通常处于空闲状态并等待要返回的JSON。 我正在考虑一些方法,可以从应用程序方面加快执行速度。

Jquery中是否有一种方法可以预先触发后续的Ajax请求并将其保存在客户端上的某个位置,以便在用户单击该页面时,JSON从缓存中解析并呈现在DOM中,而不是延迟请求传递到服务器。

jQuery AJAX请求被浏览器缓存(假设它是GET请求,则POST总是会到达服务器)。 因此,如果您可以预测最有可能发生的调用,则可以在初始化期间派生一个函数来抢先进行这些调用,并且应该从浏览器缓存中获取后续调用的结果。 但是,请确保服务器实际发送了适当的缓存头。

另一个选择是将对jQuery AJAX函数的调用包装到您自己的函数中,并将数据保存在内存中的数组中。 在这种情况下,请确保您有某种方式可以老化旧的结果,否则您将填满浏览器的内存。

您可以做的是在加载页面时触发所有AJAX请求,并将它们分配给Promise变量。 当您需要使用结果时,请使用$.when()

var ajax1 = $.ajax( { ... } );
...
$.when(ajax1).then(function(response) {
    // Do what you need
});

您可以

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM