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 相关文章推荐
Extjs中常用表单介绍与应用
Jun 07 Javascript
浅谈checkbox的一些操作(实战经验)
Nov 20 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
Mar 16 Javascript
Jquery实现顶部弹出框特效
Aug 08 Javascript
全面解析Bootstrap表单使用方法(表单按钮)
Nov 24 Javascript
AngularJS中如何使用echart插件示例详解
Oct 26 Javascript
简单谈谈ES6的六个小特性
Nov 18 Javascript
javascript中的面向对象
Mar 30 Javascript
微信小程序返回多级页面的实现方法
Oct 27 Javascript
用js限制网页只在微信浏览器中打开(或者只能手机端访问)
Dec 24 Javascript
javascript中可能用得到的全部的排序算法
Mar 05 Javascript
JavaScript中EventBus实现对象之间通信
Oct 18 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/12/05 PHP
php实现的MySQL通用查询程序
2007/03/11 PHP
Apache中php.ini的设置方法
2013/02/28 PHP
详解json在php中的应用
2018/09/30 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
2019/09/10 PHP
JS构建页面的DOM节点结构的实现代码
2011/12/09 Javascript
基于jquery自己写tab滑动门(通用版)
2012/10/30 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
JS调用页面表格导出excel示例代码
2014/03/18 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
使用JavaScript链式编程实现模拟Jquery函数
2014/12/21 Javascript
thinkphp 表名 大小写 窍门
2015/02/01 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
浅谈js使用in和hasOwnProperty获取对象属性的区别
2017/04/27 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
Vue+SpringBoot开发V部落博客管理平台
2017/12/27 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
浅谈VUE单页应用首屏加载速度优化方案
2018/08/28 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
vue使用codemirror的两种用法
2019/08/27 Javascript
NodeJS配置CORS实现过程详解
2020/12/02 NodeJs
Python封装shell命令实例分析
2015/05/05 Python
使用pandas对矢量化数据进行替换处理的方法
2018/04/11 Python
用于业余项目的8个优秀Python库
2018/09/21 Python
pycharm+PyQt5+python最新开发环境配置(踩坑)
2019/02/11 Python
PyCharm中Matplotlib绘图不能显示UI效果的问题解决
2020/03/12 Python
手把手教你用Django执行原生SQL的方法
2021/02/18 Python
德国传统玻璃制造商:Cristalica
2018/04/23 全球购物
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
.NET remoting中对象激活的两种方式
2015/06/08 面试题
以思科路由器为例你写下单臂路由的配置命令
2013/08/03 面试题
运动会广播稿400字
2014/01/25 职场文书
师德个人剖析材料
2014/02/02 职场文书
领导班子作风建设年个人整改措施
2014/09/29 职场文书
房地产销售经理岗位职责
2015/02/02 职场文书
2015年大学生工作总结
2015/04/21 职场文书