缓存篇
一个缓存就是一个组件,它可以透明地储存数据,以便以后可以更快地服务于请求。多次重复地获取资源可能会导致数据重复,消耗时间。因此缓存适用于变化性不大的一些数据,缓存能够服务的请求越多,整体系统性能就能提升越多。
$cachefactory与缓存对象
$cachefactory是一个为angular服务生产缓存对象的服务。要创建一个缓存对象,可以使用$cachefactory通过一个id和capacity。其中,id是一个缓存对象的名称,capacity则是描述缓存键值对的最大数量。举个生动的例子,$cachefactory就是包租婆,她有一栋楼,里面有大大小小的房子可以出租,只要你给够钱,包租婆就会把房子租给你(获得缓存对象),这个房子包括了它的房号(id)和房间的大小(capacity-容量)。
var mycache = $cachefactory('mycache');
其中,缓存对象拥有以下几种方法
1. mycache.info() 返回缓存对象的id,尺寸和选项
2. mycache.put() 新值键值对并放入缓存对象中 mycache.put("name", "ben")
3. mycache.get() 返回对应的缓存值,若没有找到则返回undefined mycache.get("name")
4. mycache.remove() 把键值对从对应缓存对象中移除 mycache.remove("name")
5. mycache.remvoeall() 清空该缓存对象
$http中的缓存
$http()方法允许我们传递一个cache参数。当数据不会经常改变的时候,默认的$http缓存会特别有用。其中,默认的$http缓存对象是 var cache = $cachefactory('$http'); 可以这样设置它
$http({ method: 'get', url: 'api/user.json', cache: true })
其中,缓存的键值为url, var usercache = cache.get('api/user.json')
自定义缓存
通过自定义的缓存来让$http发起请求也很简单,只需把cache值设为对应缓存对象名称即可
$http({ method: 'get', url: 'api/user.json', cache: mycache })
或者通过config配置来设置每个$http请求的缓存对象,而不必像上面的例子中,往每一个$http请求中加入配置
app.config(function($httpprovider){ $httpprovider.defaults.cache = $cachefactory('mycache',{capacity: 20})
其中,capacity会使用"近期缓存最久未使用算法",就是说,加如缓存容量为20,现在已经缓存了缓存20个,当第21个想要被缓存的时候,最久最小未被使用的缓存键值对会被清除,以便腾出空间容纳第21个缓存。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。
如对本文有疑问, 点击进行留言回复!!
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
解决三元运算符 报错“SyntaxError: can''t assign to conditional expression”
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
使用 Angular RouteReuseStrategy 缓存(路由)组件的实例代码
分享Angular http interceptors 拦截器使用(推荐)
网友评论