可能重复:
iOS 6上的Safari是否正在缓存$.ajax结果?
我有一个使用PhoneGap
的混合应用程序,在Android和iOS上运行良好。但是当我开始在iOS6中测试时,我注意到我的大多数ajax调用都没有获得服务器数据,而是从以前的ajax调用中获得缓存数据。
到目前为止我已经尝试了以下选项来禁用缓存-
$.ajaxsetup({cache:false});
no-cache=true
$.ajaxprefilter(函数(options,originalOptions,jqXHR){options.data=jquery.param($.extend(originalOptions.data{},{timestamp:new Date()。gettime()}));});
但这些似乎都不起作用。我正在从我的ajax调用中调用Java操作类--这会与上面列出的方法失败的原因有关吗?
阅读此线程
iOS 6上的Safari是否正在缓存$.ajax结果?
您可以在Web服务器级别上禁用缓存,并在URL中使用时间戳。
如何修复:有各种方法可以防止缓存请求。建议的方法是添加无缓存头。
就是这样做的。
jQuery:
检查iOS 6.0并像这样设置Ajax头。
$.ajaxSetup({ cache: false });
泽普托伊斯:
检查iOS 6.0并像这样设置Ajax头。
$.ajax({
type: 'POST',
headers : { "cache-control": "no-cache" },
url : ,
data:,
dataType : 'json',
success : function(responseText) {…}
服务器端
Java:
httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
确保在将任何数据发送到客户机之前将其添加到页面顶部。
。NET
Response.Cache.SetNoStore();
或
Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
PHP
header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.