ajax - 更改jquery中的缓存时间

标签 ajax json caching jquery

如果我们在$.ajax()中为cache传递true,jquery将缓存加载的数据, 我想知道有什么方法可以更改 $.ajax() 的缓存时间? 例如,如果 ajax 在 10 分钟内请求,jquery 将加载以前的数据,但如果在 10 分钟后请求,则加载新数据。

更新:

我们需要缓存 JSON 数据,所以我应该在 JSON 数据类型中使用 Ajax

最佳答案

当您设置 cache 时,jQuery 实际上不会为您缓存请求。至false ,它只是设置一些 header 并传递一个“缓存破坏者”查询字符串变量(例如 ?_=487262189472 )以防止浏览器或任何代理返回缓存的响应。

如果您想要 10 分钟的缓存,您可以相当轻松地实现自己的缓存。例如,

var cacheBuster = new Date().getTime();
setInterval(function() {
    cacheBuster = new Date().getTime();
}, 1000 * 60 * 10)

然后只需将其添加到您的请求的查询字符串变量中(例如 ?_noCache=<cacheBuster> )。

<小时/>

编辑:为了使其成为更完整的解决方案,以下是如何使用 cacheBuster 的示例所有 jQuery Ajax 请求对实际 Ajax 调用都是透明的:

$.ajaxPrefilter(function (options, originalOptions, jqXHR) {
    var startChar = options.url.indexOf('?') === -1 ? '?' : '&';
    options.url += startChar + '_noCache=' + cacheBuster;
});

关于ajax - 更改jquery中的缓存时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10585578/

相关文章:

java - Java servlet 中的大 Json 数据

json - 如何使用 Go 从 JSON 文件中读取一个值

android - 在 Android 中缓存对象?

javascript - laravel 中的 Ajax 验证

javascript - Ajax上传仅将第一个文件传递给php文件

javascript - 对 NodeJS 服务器的超慢发布请求

json - REST API 返回 JSON/XML 以外的内容是否可以接受?

python - 当键和值包含在现有字段的值中时读取它们

asp.net - 使ASP.NET/IIS不缓存PDF文件的正确方法

c# - 我如何重构/扩展以下模型