2017-02-09 3 views
2

組み込みのAngularJSキャッシュI.Eを使用してHTTPリクエストをキャッシュします。AngularJSがHTTPリクエストをキャッシュすると、解析されたJSONオブジェクトまたは文字列レスポンス自体がキャッシュされます

.$http({ 
    url: "/api/data", 
    method: "GET", 
    cache: true 
}) 

私のAPIから返されるすべてのデータは、gzipされたJSONです。リクエストの中には、圧縮されていないものがかなり大きく(メガバイト)、ストリングからJSONに変換するのにブラウザ時間がかなり費やされています。私は、AngularJSがHTTPレスポンスをどのようにキャッシュするのか疑問に思いました。文字列レスポンスだけをキャッシュすれば、キャッシュにアクセスするたびにJSONに再度変換する必要があり、コストがかかる可能性があります。

誰でもAngularJSのキャッシュを正確に把握できるので、HTTPキャッシュを使用するのではなく、特定のビッグコールがサービス内のオブジェクトとしてデータをキャッシュする方法を決めることができます。 4つのアイテムを配列として

var p = $http({ 
    url: url, 
    method: "GET", 
    cache: true 
}) 

p.then(function(response) { 
    vm.data = response.data; 
    vm.info = $cacheFactory.info(); 
    console.log($cacheFactory.get('$http')); 
    console.log($cacheFactory.get('$http').get(url)); 
    vm.value = $cacheFactory.get('$http').get(url)[1]; 
    vm.typeOf = typeof vm.value; 
}) 

'$ HTTP' キャッシュストアの各項目を::

+0

は、レスポンスオブジェクトをキャッシュする必要があり、あなたは常にそれを文字列として格納detaisl –

+0

を見るために、デバッグ中のJSを実行することができます。 AngularはtoSSONとfromSSONを実行します。これはメモリスパイクを発生させるため、私はそれを使用できません。 – bhantol

+0

@bhantolありがとう、私は見ることができる任意のリンクや参照がありますか? – Chris

答えて

1

あなたはキャッシュを自分で見ることができ

  • [0]のResponse.Status
  • [1] response.data
  • [2] response.headers()
  • [3] response.statusText

JSONデータは、構文解析されて任意のレスポンスインターセプタによって変換される前の生の文字列として保存されます。

DEMO on JSFiddle

関連する問題