在 angular.js 中缓存数据的常用方法是什么
what's the common approach for caching data in angular.js
假设我有一个检索标签列表的服务并将标签存储在缓存中:
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 而不是变量保存缓存有什么好处?
cacheFactory 基本上为您提供了一个将内容作为服务存储在内存中的地方。它提供了一个与缓存交互的接口,并且在您注入服务的任何地方都可用。
似乎没有任何具体的无效化内容。每当您 put() 并检查它时,只需包含一个日期键。
Oliver 的用法也很出色。通过套接字将数据流式传输到缓存,然后从缓存中获取。如果您不这样做,您可以创建一个处理缓存验证的服务。将数据传递给服务。如果是新数据,它会添加一个日期键。如果是现有数据,请比较日期。
它有以下方法:
- 放置、获取、移除、全部移除、信息、销毁
真的没什么:Documentation
你可以检查 brilliant 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);
});
}
});
And what's the benefit of using cacheFactory instead of a variable
holding cache?
除此之外它还建立了实现LRU的可测试服务并为您节省了几行代码?没有。
假设我有一个检索标签列表的服务并将标签存储在缓存中:
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 而不是变量保存缓存有什么好处?
cacheFactory 基本上为您提供了一个将内容作为服务存储在内存中的地方。它提供了一个与缓存交互的接口,并且在您注入服务的任何地方都可用。
似乎没有任何具体的无效化内容。每当您 put() 并检查它时,只需包含一个日期键。
Oliver 的用法也很出色。通过套接字将数据流式传输到缓存,然后从缓存中获取。如果您不这样做,您可以创建一个处理缓存验证的服务。将数据传递给服务。如果是新数据,它会添加一个日期键。如果是现有数据,请比较日期。
它有以下方法:
- 放置、获取、移除、全部移除、信息、销毁
真的没什么:Documentation
你可以检查 brilliant 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);
});
}
});
And what's the benefit of using cacheFactory instead of a variable holding cache?
除此之外它还建立了实现LRU的可测试服务并为您节省了几行代码?没有。