阻止iOS 6缓存Ajax POST请求

use*_*131 7 safari ajax caching cordova ios6

可能重复:
iOS 6上的Safari缓存$ .ajax结果吗?

我有一个混合应用程序使用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动作类 - 它是否与上面列出的方法失败的原因有关?

kir*_*nvj 5

这里开始

如何解决:有多种方法可以防止缓存请求.建议的方法是添加no-cache标头.

这就是它的完成方式.

jQuery:

检查iOS 6.0并设置这样的Ajax标头.

$.ajaxSetup({ cache: false });
Run Code Online (Sandbox Code Playgroud)

ZeptoJS:

检查iOS 6.0并设置这样的Ajax标头.

$.ajax({
type: 'POST',
headers : { "cache-control": "no-cache" },
url : ,
data:,
dataType : 'json',
success : function(responseText) {…}
Run Code Online (Sandbox Code Playgroud)

服务器端

Java:

httpResponse.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
Run Code Online (Sandbox Code Playgroud)

确保在将任何数据发送到客户端之前将其添加到页面顶部.

.净

Response.Cache.SetNoStore();
Run Code Online (Sandbox Code Playgroud)

要么

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Run Code Online (Sandbox Code Playgroud)

PHP

header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1.
header('Pragma: no-cache'); // HTTP 1.0.
Run Code Online (Sandbox Code Playgroud)


Sim*_*röm 0

阅读此主题

iOS 6 上的 Safari 是否缓存 $.ajax 结果?

您可以通过在 URL 中使用时间戳来禁用网络服务器级别的缓存。