$ Http Angular имеет встроенный кеш . Согласно документам:
cache - {boolean | Object} - логическое значение или объект, созданные с помощью $ cacheFactory для включения или отключения кэширования ответа HTTP. Смотрите
$ http Caching для получения дополнительной информации .
Логическое значение
Таким образом, вы можете установить cache
значение true в его опциях:
$http.get(url, { cache: true}).success(...);
или, если вы предпочитаете тип конфигурации вызова:
$http({ cache: true, url: url, method: 'GET'}).success(...);
Cache Object
Вы также можете использовать фабрику кеша:
var cache = $cacheFactory('myCache');
$http.get(url, { cache: cache })
Вы можете реализовать это самостоятельно, используя $ cacheFactory (особенно удобно при использовании $ resource):
var cache = $cacheFactory('myCache');
var data = cache.get(someKey);
if (!data) {
$http.get(url).success(function(result) {
data = result;
cache.put(someKey, data);
});
}
Я думаю, что теперь есть еще более легкий путь. Это включает базовое кэширование для всех запросов $ http (которые наследует $ resource):
источник
Более простой способ сделать это в текущей стабильной версии (1.0.6) требует намного меньше кода.
После настройки вашего модуля добавьте фабрику:
Теперь вы можете передать это в свой контроллер:
Недостатком является то, что имена ключей также настраиваются автоматически, что может затруднить их очистку. Надеюсь, они каким-то образом добавят имена ключей.
источник
Посмотрите библиотеку angular-cache, если вам нравится встроенное кэширование $ http, но вы хотите больше контроля. Вы можете использовать его для плавного увеличения кеша $ http с помощью периодических очисток времени жизни и возможностью сохранения кеша в localStorage, чтобы он был доступен между сеансами.
Кроме того, он также предоставляет инструменты и шаблоны для превращения вашего кэша в более динамичный тип хранилища данных, с которым вы можете взаимодействовать как POJO, а не просто строки JSON по умолчанию. Пока не можете комментировать полезность этой опции.
(Кроме того, связанные с ними угловые данные библиотеки являются своего рода заменой $ resource и / или Restangular и зависят от angular-cache.)
источник
angular-data
это устарело сейчас. Последнийjs-data-angular
выпускПоскольку фабрики AngularJS являются синглетонами , вы можете просто сохранить результат http-запроса и получить его в следующий раз, когда ваш сервис будет введен во что-то.
источник
установить кеш на true
источник
В Angular 8 мы можем сделать так:
Вы можете назвать это так:
Приведенный выше код будет кэшировать результат удаленного API при первом вызове, чтобы его можно было использовать при дальнейших запросах к этому методу.
источник