Prevent iOS 6 from Caching Ajax POST Requests
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Is Safari on iOS 6 caching $.ajax results?
我有一个使用
到目前为止,我已尝试以下选项来禁用缓存 -
options.data =
jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new
Date().getTime() })); });
但这些似乎都没有奏效。 我从我的ajax调用中调用Java动作类 - 它是否与上面列出的方法失败的原因有关?
如何解决:有多种方法可以防止缓存请求。 建议的方法是添加no-cache标头。
这就是它的完成方式。
jQuery的:
检查iOS 6.0并设置这样的Ajax标头。
1 | $.ajaxSetup({ cache: false }); |
ZeptoJS:
检查iOS 6.0并设置这样的Ajax标头。
1 2 3 4 5 6 7 | $.ajax({ type: 'POST', headers : {"cache-control":"no-cache" }, url : , data:, dataType : 'json', success : function(responseText) {…} |
服务器端
Java:
1 | httpResponse.setHeader("Cache-Control","no-cache, no-store, must-revalidate"); |
确保在将任何数据发送到客户端之前将其添加到页面顶部。
。净
1 | Response.Cache.SetNoStore(); |
要么
1 | Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache); |
PHP
1 2 | header('Cache-Control: no-cache, no-store, must-revalidate'); // HTTP 1.1. header('Pragma: no-cache'); // HTTP 1.0. |
阅读这个主题
iOS 6上的Safari缓存$ .ajax结果吗?
您可以在Web服务器级别上禁用缓存,并在URL中使用时间戳。