Локальное хранилище против AngularJS $cacheFactory


У меня есть проблема, хранить много данных на стороне клиента, и я не могу решить, какой путь лучше. Теперь я использую Cachefactory AngularJS, он отлично работает, но все данные перезагружаются с новым сеансом. Стоит ли вместо этого использовать локальное хранилище?

4 57

4 ответа:

Если ваша цель-хранить клиентские и постоянные данные, вы не можете использовать $cacheFactory, который просто кэширует данные для текущей сессии.

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

альтернативным решением является http://jmdobry.github.io/angular-cache/ который хорошо работает с ngResource и также может быть легко настроен для синхронизации с localStorage, поэтому запросы не нужно повторно выполнять после обновления страницы.

$resource('my/kewl/url/:key', { key: '@key' }, {
  'get': { method: 'GET', 
           cache: $angularCacheFactory('MyKewlResourceCache', { 
                                          storageMode: 'localStorage' })
         }
});

$cacheFactory, похоже, явно не ваше решение, потому что как черная дыра сказал, кэш будет очищаться каждый раз, когда сеанс истекает. $cacheFactory-это просто реализация memcache угловым способом.

angular-cache-это просто вспомогательный API, в основном он добавляет опцию в $cacheFactory, и один из этих вариантов-хранить кэш в постоянном хранилище (например, localStorage).

поэтому, если вы хотите хранить данные в постоянном хранилище, вы можете использовать один из модуль доступен как angular-local-storage или использовать $cookieStore но он будет создавать куки...

еще один угловой модуль, который выполняет эту работу:https://github.com/jmdobry/angular-cache