Benzer bir şey arayan bu iş parçacığına rastladım, ancak $ resource'un önbelleği sizin için otomatik olarak yöneteceğini fark ettim, bu nedenle önbelleği temizlenmeye zorlamaya gerek yok.
Buradaki fikir, sorgulayabileceğiniz bir kaynağa sahipseniz, bu sorgu yanıtının önbelleğe alınacağı, ancak aynı kaynak için bir şey kaydederseniz, önceden önbelleğe alınan verilerin geçersiz olması gerektiğidir, bu nedenle sizin için temizlenir. Bu şekilde çalışacağı mantıklı.
İşte bunu yapmak için kullandığım bazı kodlar (muhtemelen tuhaf görünen fabrika yaratma kısmını görmezden gelebilir ve "sınıf" gövdesine dikkat edebilirsiniz).
'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;
}]);
ListPlayers işlevini birkaç kez çağırırsanız, ilk çağrı bir http alma isteğinde bulunur ve sonraki tüm çağrılar önbelleğe alınır. Yine de addPlayer'ı çağırırsanız, beklendiği gibi bir http gönderimi gerçekleştirilir ve ardından listPlayers'a yapılan sonraki çağrı bir http alma (önbelleğe alınmaz) gerçekleştirir.
Bu sizi, başka birinin ($ http) önbelleğini yönetme ve istekler için hangi url'lerin kullanıldığını ve hangilerinin önbellekleri doğru zamanda temizlediğini takip etme işinin dışında kalmanızı sağlar.
Sanırım buradaki hikayenin ahlaki, kütüphaneyle çalışmak ve her şey iyi olacak ... herhangi bir hata veya eksik özellik dışında, ancak Angular'da bunlardan hiçbiri yok;)
ps Bunların hepsi AngularJS 1.2.0 üzerinde çalışıyor.
cache
-{boolean|Cache}
-