O $ http da Angular possui um cache incorporado . De acordo com os documentos:
cache - {boolean | Object} - Um valor ou objeto booleano criado com $ cacheFactory para ativar ou desativar o armazenamento em cache da resposta HTTP. Consulte
Cache de $ http para obter mais informações .
Valor booleano
Assim, você pode definir cache
como true em suas opções:
$http.get(url, { cache: true}).success(...);
ou, se você preferir o tipo de configuração de chamada:
$http({ cache: true, url: url, method: 'GET'}).success(...);
Objeto de cache
Você também pode usar uma fábrica de cache:
var cache = $cacheFactory('myCache');
$http.get(url, { cache: cache })
Você pode implementá-lo usando o $ cacheFactory (especialmente ao usar o recurso $):
var cache = $cacheFactory('myCache');
var data = cache.get(someKey);
if (!data) {
$http.get(url).success(function(result) {
data = result;
cache.put(someKey, data);
});
}
Eu acho que há uma maneira ainda mais fácil agora. Isso permite o armazenamento em cache básico para todas as solicitações $ http (que $ resource herda):
fonte
Uma maneira mais fácil de fazer isso na versão estável atual (1.0.6) requer muito menos código.
Depois de configurar seu módulo, adicione uma fábrica:
Agora você pode passar isso para o seu controlador:
Uma desvantagem é que os nomes das chaves também são configurados automaticamente, o que pode dificultar a limpeza. Espero que eles adicionem de alguma forma para obter nomes-chave.
fonte
Confira o cache angular da biblioteca se você gosta do cache interno do $ http, mas deseja mais controle. Você pode usá-lo para aumentar perfeitamente o cache $ http com limpezas periódicas de tempo de vida e a opção de persistir o cache no localStorage para que ele fique disponível em todas as sessões.
FWIW, ele também fornece ferramentas e padrões para transformar seu cache em um tipo de armazenamento de dados mais dinâmico com o qual você pode interagir como POJO, em vez de apenas nas seqüências JSON padrão. Ainda não posso comentar sobre a utilidade dessa opção.
(Além disso, os dados angulares da biblioteca relacionada substituem o $ resource e / ou Restangular e dependem do cache angular.)
fonte
angular-data
está obsoleto agora. O mais recente é sobrejs-data-angular
js-data.io/v1.8.0/docs/js-data-angularComo as fábricas do AngularJS são singletons , você pode simplesmente armazenar o resultado da solicitação http e recuperá-lo na próxima vez que seu serviço for injetado em algo.
fonte
defina o cache como verdadeiro.
fonte
No Angular 8, podemos fazer assim:
Você pode chamar assim:
O código acima armazenará em cache o resultado da API remota na primeira chamada, para que possa ser usada em solicitações adicionais para esse método.
fonte