angular-cache не работает как положено

Я пытался использовать модуль angular-cache в своем проекте, но не уверен, что он работает правильно или нет. Ниже приведен код -

angular.module('TrackerApp').factory('TrackerFactory', function ($resource, CacheFactory) {
    if (!CacheFactory.get('CenterCache')) {
        console.log('cache does not exists');
        CacheFactory.createCache('CenterCache', {
            maxAge: 5 * 60 * 1000,
            deleteOnExpire: 'aggressive'
        });
    }
    var centerCache = CacheFactory.get('CenterCache');
    var CenterClass = $resource(_ServiceBaseURL + 'api/Center/:id',{},{
        query: {
            method: 'GET',
            cache: centerCache,
            isArray:true
        }
    });
    CenterClass.GetMultipleAsObject = function () { return this.query(); };
    return {
        CenterClass: CenterClass
    };
});

При загрузке приложения оно выводит на консоль сообщение о том, что "кеш не существует" и создает кеш в локальном хранилище. Он создал ниже ключ в локальном хранилище

“angular-cache.caches.CenterCache.keys” = [http://localhost/Services/Tracker/api/Center]

Еще один ключ создан

“angular-cache.caches.CenterCache.data.http:// localhost/Services/Tracker/api/Center” = mystoredvalue

Вопросы -

  1. При обновлении страницы (f5) я снова вижу сообщение консоли, напечатанное снова, и в вызовах http я вижу, что информация "Центр" загружается, но она не выбирается из кэша.
  2. При переходе с одной страницы на другую я не вижу печатного сообщения консоли. Но я вижу, что вызывается API "Центр" и данные загружаются во вкладке сети. Его следовало выбирать из кеша.

Я чувствую, что это не сбор данных из кэша. Я что-то пропустил?

1 ответ

Возможно, вы решите использовать эту структуру;

angular.module('cacheApp', []).
controller('CacheCtrl', ['$scope', '$cacheFactory', function($scope, $cacheFactory) {
  $scope.keys = [];
  // get cacheFactory
  $scope.cache = $cacheFactory('CenterCache');
  // Custom put
  // call function key and value
  $scope.put = function(key, value) {

  // Control cache
    if (angular.isUndefined($scope.cache.get(key))) {
      $scope.keys.push(key);
    }

   // Fill cache
    $scope.cache.put(key, angular.isUndefined(value) ? null : value);
  };
}]);

если вы хотите использовать cookieStore

angular.module('cookieStoreExample', ['ngCookies'])
.controller('ExampleController', ['$cookieStore', function($cookieStore) {

  // Fill cookie
  $cookieStore.put('CenterCache', yourObject );


  // Get cookie
  var favoriteCookie = $cookieStore.get('CenterCache');

  //If you want
  // Removing a cookie
  $cookieStore.remove('CenterCache');
}]);
Другие вопросы по тегам