可能重复:
是的Safari在iOS 6缓存$就结果吗?
我已经使用混合应用程序PhoneGap
运行在Android和iOS的罚款。 但是,当我在iOS 6中开始测试我注意到,我没有为大多数我的Ajax调用获取服务器数据 - 而不是我正在从以前的Ajax调用缓存的数据。
到目前为止,我曾尝试以下选项来禁用缓存 -
- 包括时间戳作为查询字符串参数
-
$.ajaxSetup({ cache: false });
- 里面的Ajax调用
no-cache = true
-
$.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });
但这些都不似乎是工作。 我是从我的Ajax调用调用Java动作类 - 你认为这事做,为什么上面列出的方法都失败的原因是什么?
阅读此线程
是的Safari在iOS 6缓存$就结果吗?
你可以禁用Web服务器级别,并在网址中使用时间戳的缓存。
如何解决这个问题:有多种方法来防止请求的缓存。 推荐的方法是添加一个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.