Prevent iOS 6 from Caching Ajax POST Requests [dup

2019-08-01 06:13发布

可能重复:
是的Safari在iOS 6缓存$就结果吗?

我已经使用混合应用程序PhoneGap运行在Android和iOS的罚款。 但是,当我在iOS 6中开始测试我注意到,我没有为大多数我的Ajax调用获取服务器数据 - 而不是我正在从以前的Ajax调用缓存的数据。

到目前为止,我曾尝试以下选项来禁用缓存 -

  1. 包括时间戳作为查询字符串参数
  2. $.ajaxSetup({ cache: false });
  3. 里面的Ajax调用no-cache = true
  4. $.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });

但这些都不似乎是工作。 我是从我的Ajax调用调用Java动作类 - 你认为这事做,为什么上面列出的方法都失败的原因是什么?

Answer 1:

阅读此线程

是的Safari在iOS 6缓存$就结果吗?

你可以禁用Web服务器级别,并在网址中使用时间戳的缓存。



Answer 2:

如何解决这个问题:有多种方法来防止请求的缓存。 推荐的方法是添加一个no-cache标题。

这是它是如何做。

jQuery的

检查的iOS 6.0,并设置阿贾克斯头这样的。

$.ajaxSetup({ cache: false });

ZeptoJS:

检查的iOS 6.0,并设置阿贾克斯头这样的。

$.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");

确保在顶部之前的任何数据被发送到客户端添加该页面。

。净

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.


文章来源: Prevent iOS 6 from Caching Ajax POST Requests [duplicate]