2015-04-18 42 views
5

常見的方法假設我有檢索標籤列表的服務,我存儲標籤緩存:什麼是緩存數據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); 
      }); 
     } 
    } 
} 

什麼是緩存失效的常見方法?我應該將它與當前日期進行比較嗎?角有沒有提供緩存失效的機制?

使用cacheFactory而不是保存緩存變量有什麼好處?

+2

我們不會使其無效。初始化後,我們通過websocket連接保持高速緩存同步。 –

+0

@OliverSalzburg,有意思,謝謝,有關閱讀這種方法的鏈接? –

+1

https://github.com/oliversalzburg/absync –

回答

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,並保存你幾行代碼?沒有。

2

cacheFactory基本上爲您提供了一個將東西作爲服務存儲在內存中的地方。它提供了一個與緩存進行交互的界面,並且它可以在注入服務的任何地方使用。

它似乎沒有任何特定的做無效。只要在放入()時加入一個日期鍵並檢查它就可以了。

奧利弗的使用也非常出色。通過套接字將數據流式傳輸到緩存,然後從緩存中獲取數據。如果你沒有這樣做,你可以創建一個處理緩存驗證的服務。將數據傳遞給服務。如果它是新數據,它會添加一個日期鍵。如果它是現有數據,請比較日期。

它有以下幾種方法:

  • 上傳,獲取,刪除的removeAll,信息,破壞

真的是沒有太多內容:Documentation