每次打开应用程序时检查服务器消息。
在Android上,此消息始终被缓存。 当服务器脱机时,将返回缓存的消息。 这也是一个问题,因为那时应该显示一条消息(默认错误消息或超时)。
尝试了以下内容:
$http.get(url, { cache: false }) ...
之前
$cacheFactory.get('$http').removeAll();
即使
localStorage.clear();
同样在模块索引中:
.config(['$httpProvider', function($httpProvider)
{
if (!$httpProvider.defaults.headers.get)
{
$httpProvider.defaults.headers.get = {};
}
}])
在IOS上,除了服务器脱机时,该值似乎不会缓存。
答案 0 :(得分:1)
您可以安装Cordova插件来禁用Android和IOS的缓存:
ionic cordova plugin add cordova-disable-http-cache
或者您可以在离子论坛上查看this solution。
myApp.factory('httpInterceptor', ['$q',function($q) {
var regex = new RegExp('\.(html|js|css)$','i');
var isAsset = function(url){
return regex.test(url);
};
return {
// optional method
'request': function(config) {
// do something on success
if(!isAsset(config.url)){ //if the call is not for an asset file
config.url+= "?ts=" + Date.now(); //append the timestamp
}
return config;
},
// optional method
'requestError': function(rejection) {
// do something on error
return $q.reject(rejection);
},
// optional method
'response': function(response) {
// do something on success
return response;
},
// optional method
'responseError': function(rejection) {
return $q.reject(rejection);
}
};
}]);
//appended the interceptor in the config block using $httpProvider
$httpProvider.interceptors.push('httpInterceptor');