angular.js - angularjs $cacheFactory capacity 怎么理解
问题描述
怎么理解图中的话,最好有demo
自己写了个demo超过了限制的capacity:3但是每次缓存cache.info()打印出来的size都一样。另外$cacheFactory(key,[option])中的key只能是一个字符串吗,如何一次定义多个缓存对象
问题解答
回答1:capacity相当于给该cache规定了一个可以使用的最大容量。举个简单例子,假如你有3个水桶(capacity=3),你装了第一桶水(put),那么它还是有3个桶。再装一桶水,直到装到第四桶水的时候,因为只有3个桶,显然这桶水装不下了,怎么办呢?把最先装的那桶水倒掉,用这个桶来装第四桶水(cache策略:LRU)可以看一下$cacheFatory的实现,应该会有更深的理解
回答2:capacity 涉及到的是LRU(Least Recenlty Used, 最近最少使用)缓存,如:
var lru = $cacheFactory(’lru’, {capacity: 20});// $http请求$http.get(’/api/users.json’, {cache: lru}).then(function(data){});
现在,最新的20个请求会被缓存。第21个请求会导致LRU从缓存中将时间比较老的请求移除掉。
我们还可以通过应用的.config()函数,即配置阶段给所有$http请求设置一个默认的缓存:
angular.module(’myApp’, []).config(function($httpProvider, $cacheFactory) { $httpProvider.defaults.cache = $cacheFactory(’lru’, {capacity: 20 });});
相关文章:
1. javascript - 分类编辑保留之前分类名称2. css - 移动端 line-height安卓错位,苹果机正常用,缩放解决了,可是又出来了占位的问题3. list - python 求助4. javascript - 弹出一个子窗口,操作之后关闭,主窗口会得到相应的响应,例如网站的某些登录界面,django后台的管理等,这是怎么实现的呢?5. javascript - 函数设置参数默认值的问题6. extra没有加载出来7. javascript 的console.log 问题8. 环境搭建 - anaconda 创建python2.7环境中打开编译器确是3.6版本9. mysql replace 死锁10. 求救一下,用新版的phpstudy,数据库过段时间会消失是什么情况?
