Ich bin auf diesen Thread gestoßen, der nach etwas Ähnlichem gesucht hat, habe jedoch festgestellt, dass $ resource den Cache automatisch für Sie verwaltet, sodass das Löschen des Caches nicht erzwungen werden muss.
Die Idee ist, dass wenn Sie eine Ressource haben, die Sie abfragen können, diese Abfrageantwort zwischengespeichert wird. Wenn Sie jedoch etwas für dieselbe Ressource speichern, müssen die zuvor zwischengespeicherten Daten ungültig sein, damit sie für Sie gelöscht werden. Es macht Sinn, dass es so funktionieren würde.
Hier ist ein Code, den ich dazu verwende (Sie können den möglicherweise seltsam aussehenden Teil der Werkserstellung ignorieren und auf den "Klassen" -Körper achten).
'use strict';
sampleApp.players.$ng.factory('sampleApp.players.PlayerService', [
'$log',
'$resource',
sampleApp.players.PlayerService = function ($log, $resource) {
var service = {};
$log.info('Creating player resource.');
var Player = $resource('/api/players', {}, {query: {
isArray: true,
cache: true,
method: 'GET'
}});
service.addPlayer = function(playerName) {
$log.info('Saving a new player.');
return new Player({name: playerName}).$save();
};
service.listPlayers = function () {
$log.info('Fetching players.');
return Player.query();
};
return service;
}]);
Wenn Sie die Funktion listPlayers mehrmals aufrufen, wird beim ersten Aufruf eine http-Get-Anforderung gesendet, und alle nachfolgenden Aufrufe werden zwischengespeichert. Wenn Sie jedoch addPlayer aufrufen, wird ein http-Beitrag wie erwartet ausgeführt, und beim nächsten Aufruf von listPlayers wird ein http-Get ausgeführt (nicht zwischengespeichert).
Dies hält Sie davon ab, den Cache einer anderen Person ($ http) zu verwalten und zu versuchen, mit den URLs Schritt zu halten, die für Anforderungen verwendet werden und die Caches zum richtigen Zeitpunkt löschen.
Ich nehme an, die Moral der Geschichte hier ist, mit der Bibliothek zu arbeiten, und alles wird gut ... bis auf Fehler oder unvollständige Funktionen, aber Angular hat keine davon;)
ps Dies alles läuft unter AngularJS 1.2.0.
cache
-{boolean|Cache}
- Wenn true, wird ein Standard-$ http-Cache zum Zwischenspeichern der GET-Anforderung verwendet, andernfalls, wenn eine Cache-Instanz mit