Kątowe na $ http posiada pamięć wbudowaną . Według dokumentów:
cache - {boolean | Object} - Wartość logiczna lub obiekt utworzony za pomocą $ cacheFactory w celu włączenia lub wyłączenia buforowania odpowiedzi HTTP. Aby uzyskać więcej informacji, zobacz
$ http Caching .
Wartość logiczna
Więc można ustawić cache
, aby prawda w jego opcji:
$http.get(url, { cache: true}).success(...);
lub, jeśli wolisz typ konfiguracji połączenia:
$http({ cache: true, url: url, method: 'GET'}).success(...);
Obiekt pamięci podręcznej
Możesz także użyć fabryki pamięci podręcznej:
var cache = $cacheFactory('myCache');
$http.get(url, { cache: cache })
Możesz go zaimplementować samodzielnie za pomocą $ cacheFactory (szczególnie ręcznie, gdy używasz $ resource):
var cache = $cacheFactory('myCache');
var data = cache.get(someKey);
if (!data) {
$http.get(url).success(function(result) {
data = result;
cache.put(someKey, data);
});
}
Myślę, że jest teraz jeszcze łatwiejszy sposób. Umożliwia to podstawowe buforowanie dla wszystkich żądań $ http (które dziedziczy $ zasób):
źródło
Łatwiejszy sposób na zrobienie tego w obecnej stabilnej wersji (1.0.6) wymaga znacznie mniej kodu.
Po skonfigurowaniu modułu dodaj fabrykę:
Teraz możesz przekazać to do kontrolera:
Jednym minusem jest to, że nazwy kluczy są również konfigurowane automatycznie, co może utrudnić ich wyczyszczenie. Mam nadzieję, że w jakiś sposób dodadzą nazwy kluczy.
źródło
Sprawdź bibliotekę kątową pamięci podręcznej jeśli lubisz wbudowane buforowanie $ http, ale chcesz mieć większą kontrolę. Można go użyć do płynnego rozszerzenia pamięci podręcznej $ http o czas życia, okresowe czyszczenie oraz opcję przechowywania pamięci podręcznej w localStorage, aby była dostępna między sesjami.
FWIW, zapewnia również narzędzia i wzorce do przekształcania pamięci podręcznej w bardziej dynamiczny rodzaj magazynu danych, z którym można wchodzić w interakcje jako POJO, a nie tylko jako domyślne ciągi JSON. Nie mogę jeszcze skomentować użyteczności tej opcji.
(Poza tym powiązane dane kątowe z biblioteki są swego rodzaju zamiennikiem zasobu $ i / lub Restangular i zależą od pamięci podręcznej kątowej.)
źródło
angular-data
teraz jest przestarzałe. Najnowszy tojs-data-angular
js-data.io/v1.8.0/docs/js-data-angularPonieważ fabryki AngularJS są singletonami , możesz po prostu zapisać wynik żądania HTTP i odzyskać go przy następnym wstrzyknięciu usługi.
źródło
ustaw pamięć podręczną na wartość true.
źródło
W Angular 8 możemy to zrobić w następujący sposób:
Możesz to tak nazwać:
Powyższy kod będzie buforował wynik zdalnego interfejsu API przy pierwszym wywołaniu, dzięki czemu będzie można go użyć przy kolejnych żądaniach do tej metody.
źródło