如何防止缓存.NET JSON源

Les*_*ove 4 .net iis jquery json jsonp

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

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

jsonp1307643489579([
  ["12345","Text Here","99999","More Text Here","True","False","7/31","1"...],
  ["12345","Text Here","99999","More Text There",...]
]
Run Code Online (Sandbox Code Playgroud)

然后是一个JQuery .getJSON调用:

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

这一切都很好,除了以下.在我的开发环境和本地服务器上,每次都会重新生成新数据.但是在生产Web服务器上,数据顽固地缓存,直到我回收IIS应用程序池(!)

我试过的一些事情没有成功.

1/cache:ajaxSetup中的false不起作用.

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

2a/OutputCache Location ="无"在aspx页面声明中没有这样做.

3 /在.getJSON(url)调用中添加了随机唯一查询字符串数据.看看我们如何为每个电话追加一个独特的回调参数,我想这无论如何都已经发生了.

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

编辑: 我正在查看从Web服务器下来的实际.aspx源,并将它们缓存在那里.所以据我所知,这是一个Web服务器缓存问题,不一定是JQUERY缓存问题.

Ste*_*all 10

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

jQuery.ajaxSetup({
   cache: false
});
Run Code Online (Sandbox Code Playgroud)

昨天我和同样的问题争了半个小时.我不确定为什么手动添加随机查询字符串不起作用,但这解决了我的问题.在我添加上面的常规设置之前,缓存命中是完全随机的.


Les*_*ove 1

事实证明,确实是.ASPX服务器页面缓存了数据。对于所有对客户端 AJAX 内容的关注,我忽略了显而易见的事情。

因此,我在服务器端添加了一系列预防措施(Response.ExpiresAbsolute 等),并且它完成了工作。