2017-02-09 65 views
2

我緩存使用我的HTTP請求內置的AngularJS緩存I.E.當AngularJS高速緩存的HTTP請求是否緩存解析JSON對象或字符串響應本身

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

從我的API返回的所有數據都是JSON格式。其中一些請求非常大,未壓縮(以兆字節爲單位),並且從字符串轉換爲JSON需要花費大量瀏覽器時間。然後我想知道AngularJS如何緩存HTTP響應。如果它只緩存字符串響應,那麼每次訪問緩存時都必須再次轉換爲JSON,這可能會很昂貴。

任何人都可以闡明究竟AngularJS緩存,所以我可以決定如何最好地進行,即對某些大的調用緩存中的數據爲對象的服務,而不是使用HTTP緩存的一些情況。

+0

應該緩存響應對象,你總是可以在調試運行JS看到detaisl –

+0

它存儲爲字符串。 Angular對它執行JSON和JSON。這會產生內存尖峯,因此我無法使用它。 – bhantol

+0

@bhantol謝謝,有任何鏈接或參考我可以看看? – Chris

回答

1

你可以看一下緩存自己:

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] response.status
  • [1] response.data
  • [2] response.headers()
  • [3] response.statusText
  • 它被解析並通過任何響應攔截轉化之前

JSON數據被存儲爲原始字符串。

DEMO on JSFiddle