iPad缓存AJAX响应,尽管设置'No Store'
iPad caching AJAX responses despite setting 'No Store'
我有一个页面,它执行一个AJAX请求来获取数据,然后由用户修改数据。在使用iPad时,如果用户进行了更改,则离开页面,然后返回—AJAX请求不会重新运行—这意味着旧数据被加载(可能来自iPad的浏览器缓存)。
我的服务器代码是ASP。. NET Forms,我已经尝试设置没有缓存与我能找到的所有设置:
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,它将强制请求的页面不被缓存浏览器。将cache设置为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()
因为querystring每次传递给相同的web方法,我可以忽略它的值,但Safari 不能缓存结果,因为它总是在不同的地址。
当然这不是最好的解决方案!
相关文章:
- TypeError:_this.store.getState在使用来自Redux的连接时不是函数
- Query JS Ext.data.Store
- Javascript GetElementByID has no value
- 谷歌地图API v3:Initial View is Fine,but Gray Box with No Map if
- 回流:让多个组件访问同一个Store
- Javascript window.open()toolbar=no不起作用
- Regex表示10位数字,其中没有't允许所有零、所有单个no和序列号
- `npm install` killed for large package.json, no npm-debug.lo
- YES或NO表示对象事件中的分号
- Wordpress AJAX with raw javascript? NO Jquery
- 禁用复选框上的输入框 jquery NO onchange
- no-op if 语句会导致 Google 图表失败
- No puedo comparar una variable con un cadena de tipo String
- 在javascript中访问当前页面的页面标题[no ajax]
- JavaScript 动态更改图像 src 的位置 - NO JQuery
- 相当于 Jquery/Backbone.js 中的 Dgrid/Store (Dojo 工具包)
- RequireJs in IE8: "no define call for.."
- HTML DOMs, ids vs no ids?
- AngularJS - 在第一个可见元素上应用 CSS 类(Preferred No JQuery)
- iPad缓存AJAX响应,尽管设置'No Store'