我使用内置的AngularJS缓存I.E。
缓存我的HTTP请求global
quiet
defaults
log global
mode http
option forwardfor
timeout connect 60s
timeout client 60s
timeout server 60s
default-server init-addr none
resolvers docker_resolver
nameserver dns 127.0.0.11:53
frontend https-proxy
bind 0.0.0.0:80
bind 0.0.0.0:443 ssl crt /usr/local/etc/haproxy/dev_server.pem
redirect scheme https if !{ ssl_fc }
acl is_api_server hdr(host) -i mywebsite
use_backend api_server if is_api_server
backend api_server
server haproxyapi api-server-dev:80 check inter 10s resolvers docker_resolver resolve-prefer ipv4
我的API返回的所有数据都是gzip压缩的JSON。一些请求是非常大的未压缩(想想兆字节),并且从字符串转换为JSON花费了大量的浏览器时间。然后我想知道AngularJS如何缓存HTTP响应。如果它只缓存字符串响应,那么每次我访问缓存时,它都必须再次转换为JSON,这可能很昂贵。
任何人都可以了解AngularJS缓存的内容,以便我可以决定如何最好地继续进行,即某些大调用将数据缓存为服务中的对象而不是使用HTTP缓存。
答案 0 :(得分: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' cache将每个项目存储为包含4个项目的数组:
JSON数据在被任何响应拦截器解析和转换之前存储为原始字符串。