1. ホーム
  2. angularjs

[解決済み]AngularJSでHTTP 'Get'サービスの応答をキャッシュする?

2022-04-09 08:37:20

質問

データオブジェクトが空のときにHTTP 'Get'リクエストを行い、成功したときにデータオブジェクトにデータを入力するカスタムAngularJSサービスを作成できるようにしたいです。

次にこのサービスを呼び出すときは、HTTPリクエストを再度行うオーバーヘッドを回避し、代わりにキャッシュされたデータオブジェクトを返したいと考えています。

これは可能でしょうか?

どのように解決するのですか?

Angularの HTTP には キャッシュを内蔵しています。 . ドキュメントによると

キャッシュ - ブーリアン|オブジェクト - ブーリアン値 またはオブジェクト HTTP レスポンスのキャッシュを有効または無効にするために $cacheFactory で作成します。参照 httpキャッシュ 情報 .

ブール値

を設定することができるわけです。 cache まで 真の をオプションに追加しました。

$http.get(url, { cache: true}).success(...);

または、コンフィグタイプの通話を希望する場合。

$http({ cache: true, url: url, method: 'GET'}).success(...);

キャッシュ・オブジェクト

また、キャッシュファクトリを使用することも可能です。

var cache = $cacheFactory('myCache');

$http.get(url, { cache: cache })

を使って自分で実装することができます。 キャッシュファクトリー (特に$resourceを使うときに便利です)。

var cache = $cacheFactory('myCache');

var data = cache.get(someKey);

if (!data) {
   $http.get(url).success(function(result) {
      data = result;
      cache.put(someKey, data);
   });
}