iPad缓存AJAX响应,尽管设置了“No Store”
我有一个页面,它执行AJAX请求来获取数据,然后由用户修改。 当使用iPad时,如果用户做出改变,然后离开页面,然后回来 - AJAX请求不会重新运行 - 这意味着旧数据被加载(推测来自iPad的浏览器缓存)。
我的服务器代码是ASP.NET窗体,并且我尝试使用我可以找到的所有设置来设置缓存:
Context.Response.Cache.SetNoStore()
Context.Response.Cache.SetETag(New Guid().ToString())
Context.Response.Cache.SetExpires(New DateTime())
Context.Response.Cache.SetNoServerCaching()
Context.Response.Cache.SetCacheability(HttpCacheability.NoCache)
Context.Response.Expires = 0
但没有运气。 有任何想法吗?
正如前面的回答中所提出的,jQuery为它的$ .ajax方法提供了一个简单的选项缓存:
如果设置为false,它将强制请求的页面不被浏览器缓存。 将缓存设置为false还会将查询字符串参数“_ = [TIMESTAMP]”附加到URL。
例如:
$.ajax({
url: "test.html",
cache: false,
success: function () {
$(this).addClass("done");
}
});
如果你不使用jQuery,你可以自己实现类似的行为。
我目前的解决方法是不断(略)修改AJAX请求的URL:
url: "/AjaxService.asmx/" + methodName + "?dt=" + new Date().getTime()
由于查询字符串每次都传递给相同的Web方法,因此我可以忽略它的值,但Safari 无法缓存结果,因为它始终位于不同的地址。
虽然这不是最好的解决方案!
链接地址: http://www.djcxy.com/p/55721.html