我有一个使用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动作类 - 它是否与上面列出的方法失败的原因有关?
答案 0 :(得分:5)
来自here
如何解决:有多种方法可以防止缓存请求。建议的方法是添加无缓存标头。
这就是它的完成方式。
<强>的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");
确保在将任何数据发送到客户端之前将其添加到页面顶部。
<强> .NET 强>
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.
答案 1 :(得分:0)