首页 > 代码库 > 关于 lru-cache 之 maxAge 盲点 源码分析
关于 lru-cache 之 maxAge 盲点 源码分析
下面copy了一段实例
var LRU = require("lru-cache")
, options = { max: 500
, length: function (n, key) { return n * 2 + key.length }
, dispose: function (key, n) { n.close() }
, maxAge: 1000 * 60 * 60 }
, cache = LRU(options)
我这段大家应该很熟悉了。maxAge 这个参数很容易给人产生误导,这里我详细说下maxAge。之前我一直认为 当set 完一个 key-value 后 超过 maxAge 设置的值时,LRU 会自动把 key-value 删掉。 然而经过一番分析后,事实不尽然~
首先maxAge 这个参数只有在set值和判断status的时候(isStale方法)进行校验。
而 isStale 这个方法 在取值,判断值和方法forEach中有用到
过期(超过maxAge)的值会通过del 方法删除,删除时执行 实例对象是设置的 dispose方法。
所以,maxAge 参数值有效,但是是在执行 get 和 forEach 时才会进行时间校验。超时则执行dispose方法。
而 对于超时的 key-value 是否 能取到值 ,取决于 设置的stale 参数。
参数 maxAge, stale 参数默认
在get的时候 判断是否超时,如果超时,删除后返回undefined
参数 maxAge, stale 设置true
在get 的时候 判断是否超时, 如果超时, 删除后返回该值后
关于 lru-cache 之 maxAge 盲点 源码分析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。