Page 403 - AngularJS权威教程
P. 403
28.3 $http 中的缓存 383
$http({ 19
method: 'GET',
url: '/api/users.json',
cache: true
}); 20
// 或者使用辅助方法.get()
$http.get('/api/user.json', {
cache: true 21
});
现在,通过$http到URL/api/user.json的每个请求将会存储到默认的$http缓存中。这个
$http缓存中的请求键就是完整的URL路径。 22
通过在$http选项中传入参数true,可以告诉$http服务使用默认的缓存。如果我们不想经
常干扰那些缓存,使用默认缓存是很有用的。 23
然而,如果需要,也可以操作这个默认的$http缓存(比如,如果我们发起的另外一个没有
缓存的请求提醒我们发生了增量变化,我们就可以在默认的$http请求中清除这个请求)。 24
为了引用$http的默认请求,只需通过$cacheFactory()使用ID来获取到该缓存:
25
var cache = $cacheFactory('$http');
对于所掌控的缓存,我们可以在需要时进行所有的正常操作,比如检索已缓存的响应,从缓 26
存中清除条目,或者消除所有缓存的引用。
// 获取上一次请求的缓存 27
var usersCache = cache.get('http://example.com/api.users.json');
// 删除上一次请求的缓存入口
cache.remove('http://example.com/api.users.json'); 28
// 重新开始并移除全部缓存
cache.removeAll();
尽管可以引用默认缓存,但是有时候能够对缓存有更多的控制以及针对缓存的表现创建规则 29
可能更有用。这就需要创建一个新的缓存来使用$http请求。
30
28.3.2 自定义缓存
通过自定义的缓存来让$http请求发起请求很简单。可以采用传递缓存实例的方式,而不必 31
传递一个布尔参数true给请求。
var myCache = $cacheFactory('myCache'); 32
$http({
method: 'GET',
utl: '/api/users.json', 33
cache: myCache
});
// 或者使用辅助方法.get()
$http.get('/api/users.json', { 34
cache: myCahe
});
35
现在,$http将会使用自定义的缓存而非默认缓存。
36