AJAX响应缓存


AJAX response cache

我正在使用cordova开发一个移动应用程序。该应用程序包括向远程服务器上的php脚本发送AJAX请求,然后php从数据库中提取所需的数据,并以JSON格式响应这些数据,以便应用程序可以解析这些数据并在应用程序上显示它们。这里的问题是,每次我打开应用程序或浏览应用程序的不同页面时,我都必须再次发送AJAX调用。

下面是请求数据的函数:
$.ajax({
                    crossDomain: true,
                    type: "GET",
                    async: false,
                    url: "www.website.com/get-data.php?offset=8&&categorie=all ,
                    dataType: "json",
                    cache: true,
                    success: function (data) {
                     //function to call if success callback
                    }

});

是否有办法缓存数据或保存它们,以防止不必要的使用互联网连接和浪费时间等待服务器的响应?

谢谢你的回答。

您没有确切地描述您想要保存的数据类型(它只是字符串吗?它是一个数组吗?对象?)或显示任何代码,所以我只能为您指出一个方向。看看这个教程,你可以快速开始学习一些关于sessionStorage和localStorage的东西,这可能会对你的程序有帮助。如果这些建议中的任何一个符合你的需要,你可以自己做更深入的研究。

(很抱歉我没有在评论中写这个,我只是没有足够的声誉)

对我来说,我有同样的问题,缓存数据作为字符串的最佳方法是localstorage。然后,您还可以将上次更新数据的时间存储到本地存储,并仅在日期更新为新日期时才检查来自服务器的数据。

您没有提供太多关于在android活动中使用AJAX响应和所需缓存周期的信息。

这是给你的三个建议:

  1. 您可以使用数据更改校验和

    服务器应该对每个请求生成一个校验和。当你发送请求时,服务器会给你JSON响应+当前JSON数据校验和。您应该在设备上保存(缓存)JSON响应+校验和(作为设置或XML文件或JSON文件,…)。

    之后,每次你需要发送一个请求,你把你得到的最后一个校验和,作为请求的HTTP参数。所以服务器检查如果校验和(所以数据)没有改变,服务器只会返回USE_CACHE和应用程序使用最后缓存的JSON响应,否则你会得到新的JSON响应+新的校验和。

    此解决方案将在单个原始请求上工作。但是,您可以完成它并添加对多个raw的支持(如果您不能这样做,我可以帮助您…)

  2. 使用更近的服务器
  3. 压缩请求和响应