Creo que hay una manera aún más fácil ahora. Esto permite el almacenamiento en caché básico para todas las solicitudes $ http (que $ resource hereda):
var app = angular.module('myApp',[])
.config(['$httpProvider', function ($httpProvider) {
// enable http caching
$httpProvider.defaults.cache = true;
}])
gspatel
fuente
fuente
Respuestas:
Una forma más fácil de hacer esto en la versión estable actual (1.0.6) requiere mucho menos código.
Después de configurar su módulo, agregue una fábrica:
Ahora puede pasar esto a su controlador:
Una desventaja es que los nombres clave también se configuran automáticamente, lo que podría dificultar su eliminación. Esperemos que agreguen de alguna manera para obtener nombres clave.
fuente
Eche un vistazo a la biblioteca de caché angular si le gusta el almacenamiento en caché incorporado de $ http pero quiere más control. Puede usarlo para aumentar sin problemas el caché de $ http con purgas periódicas de tiempo de vida y la opción de mantener el caché en localStorage para que esté disponible en todas las sesiones.
FWIW, también proporciona herramientas y patrones para convertir su caché en un tipo de almacén de datos más dinámico con el que puede interactuar como POJO, en lugar de solo las cadenas JSON predeterminadas. No puedo comentar sobre la utilidad de esa opción todavía.
(Luego, además de eso, los datos angulares de la biblioteca relacionada son una especie de reemplazo de $ resource y / o Restangular, y dependen de la memoria caché angular).
fuente
angular-data
ahora está en desuso. La últimajs-data-angular
versiónComo las fábricas de AngularJS son singletons , simplemente puede almacenar el resultado de la solicitud http y recuperarlo la próxima vez que su servicio se inyecte en algo.
fuente
configura el caché para que sea verdadero.
fuente
En Angular 8 podemos hacer así:
Puedes llamarlo así:
El código anterior almacenará en caché el resultado de la API remota en la primera llamada para que pueda usarse en solicitudes adicionales a ese método.
fuente