提问者:小点点

防止iOS 6缓存Ajax POST请求[重复]


可能重复:
iOS 6上的Safari是否正在缓存$.ajax结果?

我有一个使用PhoneGap的混合应用程序,在Android和iOS上运行良好。但是当我开始在iOS6中测试时,我注意到我的大多数ajax调用都没有获得服务器数据,而是从以前的ajax调用中获得缓存数据。

到目前为止我已经尝试了以下选项来禁用缓存-

  1. 包括时间戳作为查询字符串参数
  2. $.ajaxsetup({cache:false});
  3. 在ajax内部调用no-cache=true
  4. $.ajaxprefilter(函数(options,originalOptions,jqXHR){options.data=jquery.param($.extend(originalOptions.data{},{timestamp:new Date()。gettime()}));});

但这些似乎都不起作用。我正在从我的ajax调用中调用Java操作类--这会与上面列出的方法失败的原因有关吗?


共2个答案

匿名用户

阅读此线程

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.