假设我有一个检索标记列表的服务,并将标记存储在缓存中:
function TagsRetriever() {
var cache = $cacheFactory("tags");
function getTags() {
var cached = cache.get("tags");
if (cached) {
return cached;
} else {
return $http.get("url/getTags").then(function (tags) {
cache.put("tags", tags);
});
}
}
}
使缓存无效的常用方法是什么?我应该将它与当前日期进行比较吗? angular是否提供任何缓存失效机制?
使用cacheFactory而不是保存缓存的变量有什么好处?
答案 0 :(得分:2)
cacheFactory基本上为您提供了将内容作为服务存储在内存中的位置。它提供了一个与缓存交互的接口,它可以在您注入服务的任何地方使用。
它似乎没有任何特定的失效。只要你放()并检查它就可以包含一个日期键。
奥利弗的使用也很出色。通过套接字将数据流传输到缓存,然后从缓存中获取。如果您不这样做,您可以创建一个处理缓存验证的服务。将数据传递给服务。如果是新数据,则会添加日期密钥。如果是现有数据,请比较日期。
它有以下方法:
真的没有多大意义:Documentation
答案 1 :(得分:1)
你可以检查一下辉煌的angular-cache,它会阻止你用$ cacheFactory重新发明轮子(它只提供简单的存储,有时它足够了)。
它如何处理缓存失效(手册中的一个例子):
CacheFactory('profileCache', {
maxAge: 60 * 60 * 1000 // 1 hour,
deleteOnExpire: 'aggressive',
onExpire: function (key, value) {
$http.get(key).success(function (data) {
profileCache.put(key, data);
});
}
});
使用cacheFactory而不是变量的好处是什么 拿着缓存?
除了它建立实现LRU的可测试服务并为您节省几行代码?什么都没有。