Je suis tombé sur ce fil à la recherche de quelque chose de similaire, mais j'ai trouvé que $ resource gérera automatiquement le cache pour vous, il n'est donc pas nécessaire de forcer l'effacement du cache.
L'idée est que si vous avez une ressource que vous pouvez interroger, cette réponse de requête sera mise en cache, mais si vous enregistrez quelque chose pour cette même ressource, les données précédemment mises en cache doivent être invalides, elles sont donc effacées pour vous. Il est logique que cela fonctionne de cette façon.
Voici un peu de code que j'utilise pour faire cela (vous pouvez ignorer la partie de création d'usine peut-être étrange et faire attention au corps "classe").
'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;
}]);
Si vous appelez la fonction listPlayers plusieurs fois, le premier appel effectue une requête http get et tous les appels suivants sont mis en cache. Si vous appelez addPlayer cependant, une publication http est effectuée comme prévu, puis le prochain appel à listPlayers effectuera un get http (non mis en cache).
Cela vous empêche de gérer le cache de quelqu'un d'autre ($ http) et d'essayer de savoir quelles URL sont utilisées pour les requêtes et lesquelles effacent les caches au bon moment.
Je suppose que la morale de l'histoire ici est de travailler avec la bibliothèque et tout ira bien ... sauf pour les bogues ou les fonctionnalités incomplètes, mais Angular n'en a aucun;)
ps Tout cela fonctionne sur AngularJS 1.2.0.
cache
-{boolean|Cache}
- Si vrai, un cache $ http par défaut sera utilisé pour mettre en cache la requête GET, sinon si une instance de cache construite avec