gpt4 book ai didi

angularjs - Cordova/AngularJS $http.get 总是被缓存

转载 作者:可可西里 更新时间:2023-11-01 16:21:29 34 4
gpt4 key购买 nike

每次打开应用程序时检查服务器消息。

在 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 上,该值似乎没有被缓存,除非服务器处于离线状态。

最佳答案

您可以安装 Cordova 插件来禁用 Android 和 IOS 的缓存:

ionic cordova plugin add cordova-disable-http-cache

或者您可以查看this solution在 ionic 论坛上。

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');

关于angularjs - Cordova/AngularJS $http.get 总是被缓存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32649475/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com