在 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的可测试服务并为您节省了几行代码?没有。