什么是在angular.js中缓存数据的常用方法

时间:2015-04-18 19:15:28

标签: javascript angularjs caching

假设我有一个检索标记列表的服务,并将标记存储在缓存中:

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而不是保存缓存的变量有什么好处?

2 个答案:

答案 0 :(得分:2)

cacheFactory基本上为您提供了将内容作为服务存储在内存中的位置。它提供了一个与缓存交互的接口,它可以在您注入服务的任何地方使用。

它似乎没有任何特定的失效。只要你放()并检查它就可以包含一个日期键。

奥利弗的使用也很出色。通过套接字将数据流传输到缓存,然后从缓存中获取。如果您不这样做,您可以创建一个处理缓存验证的服务。将数据传递给服务。如果是新数据,则会添加日期密钥。如果是现有数据,请比较日期。

它有以下方法:

  • put,get,remove,removeAll,info,destroy

真的没有多大意义: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的可测试服务并为您节省几行代码?什么都没有。