jquery - 如何防止 .NET JSON 源被缓存

标签 jquery .net json iis jsonp

我创建了简单的 .aspx 页面,该页面在数据库中查询一些实时数据,然后返回 Content-Type application/json; charset=utf-8 的 JSONP(或最终类似 JSONP)提要。

这里是输出的格式,或多或少:

jsonp1307643489579([
  ["12345","Text Here","99999","More Text Here","True","False","7/31","1"...],
  ["12345","Text Here","99999","More Text There",...]
]

然后是 JQuery .getJSON 调用:

var url = "myURL.aspx?id=123&callBack=?";
$.getJSON(url, null, function(msg) { etc etc.

除了以下情况外,一切正常。在我的开发环境和本地服务器上,每次都会返回新数据。但在生产 Web 服务器上,数据会顽固地缓存,直到我回收 IIS 应用程序池(!)

有些事情我尝试过但没有成功。

1/缓存:ajaxSetup 中的 false 不起作用。

2/在 web.config 中关闭输出缓存。

2a/Aspx 页面声明中的 OutputCache Location="None"不会执行此操作。

3/将随机唯一查询字符串数据添加到 .getJSON(url) 调用中。看看我们如何向每个调用附加一个唯一的回调参数,我想无论如何这已经发生了。

知道为什么我的 Web 服务器保留这些缓存的应用程序/JSON 文件吗?

编辑:我正在查看实际的 .aspx 提要,因为它们来自网络服务器,并且它们缓存在那里。据我了解,这是一个 Web 服务器缓存问题,不一定是 JQUERY 缓存问题。

最佳答案

在进行任何 getJSON 调用之前,请使用以下命令:

jQuery.ajaxSetup({
   cache: false
});

昨天我与同样的问题斗争了大约半个小时。我不确定为什么手动添加随机查询字符串不起作用,但这解决了我的问题。缓存命中是完全随机的,直到我添加上面的一般设置。

关于jquery - 如何防止 .NET JSON 源被缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6297589/

相关文章:

javascript - 如何在 Angular 中正确模块化/组织单个页面/ Controller 的 Javascript?

javascript - 如何使用 javascript/jquery 获取 android 设备的 IMEI 号码?

javascript - Angular : ng-click() accepting invalid arguments

Jquery无法捕获<form>提交事件

.net - 从 64 位进程调用 32 位代码

c# - Nhibernate - 找不到属性的 setter/getter

c# - 在 StatusStrip 的 ProgressBar 上显示文本

javascript - 将具有未知属性的 JavaScript 对象发送到 asp.net MVC Controller

java - 如何在GSON中使用jsonpath

c# - 如何在 Angular 2 中序列化/反序列化 .NET 类型的 JSON