AngularJS中的缓存使用


Posted in Javascript onJanuary 11, 2017

缓存篇

一个缓存就是一个组件,它可以透明地储存数据,以便以后可以更快地服务于请求。多次重复地获取资源可能会导致数据重复,消耗时间。因此缓存适用于变化性不大的一些数据,缓存能够服务的请求越多,整体系统性能就能提升越多。

$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个缓存。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript 流畅动画实现原理
Sep 08 Javascript
JavaScript 变量作用域分析
Jul 04 Javascript
javascript简单事件处理和with用法介绍
Sep 16 Javascript
JS对象转换为Jquery对象实现代码
Dec 29 Javascript
jquery无刷新验证邮箱地址实现实例
Feb 19 Javascript
Javascript Memoizer浅析
Oct 16 Javascript
javascript实现淡蓝色的鼠标拖动选择框实例
May 09 Javascript
javascript中setInterval的用法
Jul 19 Javascript
js添加绑定事件的方法
May 15 Javascript
原生JS实现列表子元素顺序反转的方法分析
Jul 02 Javascript
node 解析图片二维码的内容代码实例
Sep 11 Javascript
快速解决element的autofocus失效问题
Sep 08 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 #Javascript
ajax的分页查询示例(不刷新页面)
Jan 11 #Javascript
JavaScript实现大图轮播效果
Jan 11 #Javascript
微信小程序 特效菜单抽屉效果实例代码
Jan 11 #Javascript
canvas 弹幕效果(实例分享)
Jan 11 #Javascript
JQuery实现动态操作表格
Jan 11 #Javascript
js如何判断是否在iframe中及防止网页被别站用iframe嵌套
Jan 11 #Javascript
You might like
PHP中的日期及时间
2006/11/23 PHP
php ci框架验证码实例分析
2013/06/26 PHP
PHP Socket网络操作类定义与用法示例
2017/08/30 PHP
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
Jquery EasyUI的添加,修改,删除,查询等基本操作介绍
2013/10/11 Javascript
关闭浏览器窗口弹出提示框并且可以控制其失效
2014/04/15 Javascript
使用Node.js配合Nginx实现高负载网络
2015/06/28 Javascript
基于jQuery实现数字滚动效果
2017/01/16 Javascript
js实现无缝滚动图(可控制当前滚动的方向)
2017/02/22 Javascript
jQuery Jsonp跨域模拟搜索引擎
2017/06/17 jQuery
Javascript中从学习bind到实现bind的过程
2018/01/05 Javascript
NodeJS使用Range请求实现下载功能的方法示例
2018/10/12 NodeJs
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
Webpack4+Babel7+ES6兼容IE8的实现
2019/04/10 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
vue点击当前路由高亮小案例
2019/09/26 Javascript
[01:13]2015国际邀请赛线下观战现场
2015/08/08 DOTA
[50:44]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第二场 2月22日
2021/03/11 DOTA
浅谈python 线程池threadpool之实现
2017/11/17 Python
python实现画五角星和螺旋线的示例
2019/01/20 Python
tensorflow的计算图总结
2020/01/12 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
pyMySQL SQL语句传参问题,单个参数或多个参数说明
2020/06/06 Python
美国网上鞋城:Shoeline.com
2016/11/17 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
公司门卫岗位职责
2014/03/15 职场文书
2014春晚主持词
2014/03/25 职场文书
消防安全责任书范本
2014/04/15 职场文书
法院授权委托书范文
2014/08/02 职场文书
确保工程质量承诺书
2015/04/29 职场文书
党员“一帮一”活动总结
2015/05/07 职场文书
2015年重阳节活动主持词
2015/07/30 职场文书
2015年物业管理员工工作总结
2015/10/15 职场文书
使用php的mail()函数实现发送邮件功能
2021/06/03 PHP
SQLServer之常用函数总结详解
2021/08/30 SQL Server
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python