У меня проблема с хранением большого количества данных на стороне клиента, и я не могу решить, какой способ лучше. Теперь я использую cacheFactory AngularJS, он работает нормально, но все данные перезагружаются с новым сеансом. Стоит ли вместо этого использовать локальное хранилище?
Локальное хранилище против AngularJS $cacheFactory
Ответы (4)
Если вашей целью является хранение клиентских и постоянных данных, вы не можете использовать $cacheFactory, который просто кэширует данные для текущего сеанса.
Одним из решений является использование нового API локального хранилища. Этот потрясающий модуль Angular сделает за вас всю грязную работу, и даже возвращается к файлам cookie для старых браузеров!
Альтернативное решение — http://jmdobry.github.io/angular-cache/, которое работает хорошо работает с ngResource, а также может быть легко настроен для синхронизации с localStorage, поэтому запросы не нужно повторно выполнять после обновления страницы.
$resource('my/kewl/url/:key', { key: '@key' }, {
'get': { method: 'GET',
cache: $angularCacheFactory('MyKewlResourceCache', {
storageMode: 'localStorage' })
}
});
$cacheFactory кажется явно НЕ вашим решением, потому что, как сказал Blackhole, кеш будет очищаться каждый раз, когда истечет сеанс. $cacheFactory — это просто реализация memcache в стиле Angular.
angular-cache — это просто вспомогательный API, в основном он добавляет опцию в $cacheFactory, и одна из этих опций — хранить кеш в постоянном хранилище (например, localStorage).
Поэтому, если вы хотите хранить данные в постоянном хранилище, вы можете использовать один из доступных модулей, например angular-local -storage или используйте $cookieStore, но это создаст файлы cookie. ..
Другой угловой модуль, который выполняет эту работу: https://github.com/jmdobry/angular-cache