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

时间:2015-04-19 09:22:22

标签: javascript jquery ajax json performance

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

在Jquery中是否有办法在手边触发后续的ajax请求并将其保存在客户端的某个位置,这样当用户点击该页面时,JSON就会从缓存中解析并在DOM中呈现而不是延迟了对服务器的请求。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

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

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

你可以