簡體   English   中英

當 AngularJS 緩存 HTTP 請求時,它會緩存解析的 JSON 對象或字符串響應本身

[英]When AngularJS caches HTTP requests does it cache the parsed JSON object or the string response itself

我使用內置的 AngularJS 緩存 IE 緩存我的 HTTP 請求

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

從我的 API 返回的所有數據都是 gzipped JSON。 一些請求是相當大的未壓縮(想想兆字節),並且在從字符串轉換為 JSON 上花費了大量的瀏覽器時間。 然后我想知道 AngularJS 如何緩存 HTTP 響應。 如果它只緩存字符串響應,那么每次我訪問緩存時,它都必須再次轉換為 JSON,這可能會很昂貴。

任何人都可以闡明 AngularJS 究竟緩存了什么,以便我可以決定如何最好地進行,即對於某些大調用,將數據緩存為服務中的對象,而不是使用 HTTP 緩存。

你可以自己查看緩存:

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' 緩存將每個項目存儲為一個包含 4 個項目的數組:

  • [0] 響應.狀態
  • [1] response.data
  • [2] response.headers()
  • [3] response.statusText

JSON 數據在被任何響應攔截器解析和轉換之前存儲為原始字符串。

JSFiddle 上演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM