我创建了简单的 .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/