VSO*_*VSO 9 angularjs restangular
是否存在角度服务将缓存Restangular/$ http调用而未明确告知这样做的情况?例如,我有一个服务做这样的事情:
function getSomeThings(){
return Restangular.one('things').get().then(function (thing) {
return thing;
});
}
Run Code Online (Sandbox Code Playgroud)
每次页面刷新时都会调用此服务(它在UI路由器路由解析中).是否有可能每次都不会进行此调用,但Angular会以某种方式缓存这些调用,而没有明确告知这样做?
我熟悉如此明确的缓存:
RestangularProvider.setDefaultHttpFields({cache: true});
Run Code Online (Sandbox Code Playgroud)
这不是意图.我的问题是角度服务是否具有一些固有的缓存逻辑,如果是,则如何覆盖它.
Sal*_*ani 23
默认情况下,Restangular不会实现任何缓存策略或方案,您需要构建自己的所有者.据我所知,cache
在使用Restangular时你可以做些什么:
你可以像你说的那样缓存所有内容,但你可能会发现自己正在使用陈旧的数据,所以要小心:
RestangularProvider.setDefaultHttpFields({cache: true});
Run Code Online (Sandbox Code Playgroud)您可以缓存单个请求的响应,例如:
function getSomeThings(){
Restangular.one('thing', 123).withHttpConfig({ cache: true}).get().then(function (thing) {
return thing;
});
}
Run Code Online (Sandbox Code Playgroud)您可以
通过调用此方法,在必要时涉及自定义
$ cacheFactory实例以使缓存的响应失效或无效:$cacheFactory.get('$http').removeAll()
您可以在自己的缓存界面中滚动,而不是将true设置为缓存.这是我用来在发送创建,更新或删除请求时删除所有缓存数据的工厂示例:
.factory('HTTPCache', ['Restangular', '$cacheFactory',
function(Restangular, $cacheFactory) {
var service = {};
var cache;
// Creates the cache
service.init = function() {
cache = $cacheFactory('http');
Restangular.setDefaultHttpFields({cache: cache});
Restangular.setResponseInterceptor(function(response, operation) {
if (operation === 'put' || operation === 'post' || operation === 'remove') {
cache.removeAll();
}
return response;
})
}
return service;
}])
Run Code Online (Sandbox Code Playgroud) 归档时间: |
|
查看次数: |
3644 次 |
最近记录: |