防止iOS 6缓存Ajax POST请求
可能重复:
iOS 6上的Safari缓存$ .ajax结果吗?
我有一个使用PhoneGap
的混合应用程序,可以在Android和iOS上正常运行。 但是当我开始在iOS 6中测试时,我注意到我没有获取大部分ajax调用的服务器数据 - 而是从以前的ajax调用中获取缓存的数据。
到目前为止,我已经尝试了以下选项来禁用缓存 -
$.ajaxSetup({ cache: false });
no-cache = true
$.ajaxPrefilter(function (options, originalOptions, jqXHR) { options.data = jQuery.param($.extend(originalOptions.data||{}, { timeStamp: new Date().getTime() })); });
但这些似乎都没有奏效。 我从我的ajax调用中调用Java动作类 - 它会与上面列出的方法失败的原因有关吗?
阅读此主题
iOS 6上的Safari缓存$ .ajax结果吗?
您可以在Web服务器级别禁用缓存,并在URL中使用时间戳。
从这里
如何解决它:有各种方法来防止缓存请求。 推荐的方法是添加一个无缓存头。
这是如何完成的。
jQuery :
检查iOS 6.0并像这样设置Ajax头。
$.ajaxSetup({ cache: false });
ZeptoJS :
检查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");
在将任何数据发送到客户端之前,请务必在页面顶部添加此项。
。净
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.
链接地址: http://www.djcxy.com/p/55705.html