问题:
据我所知,每次缓存不足时都会调用dispose
,它将删除缓存的特定项(请参阅参考资料)。
我感到非常奇怪的是,尽管缓存中显然有足够的空间(仅使用几个小对象进行测试),但许多项目似乎由dispose
调用。甚至更奇怪的是,当我重新加载页面时,这些项目并未被删除:它们仍在缓存中并且显然已被正确检索。
我必须误解dispose
的作用。 dispose
实际做什么?
参考:
https://www.npmjs.com/package/lru-cache#options
dispose
从缓存中删除项目时调用的函数。如果您想在不再访问项目时关闭文件描述符或执行其他清理任务,这将很方便。用键值调用。它是在实际从内部缓存中删除该项目之前调用的,因此,如果要立即将其放回去,则必须在nextTick或setTimeout回调中执行此操作,否则它将不执行任何操作。
代码:
options = { max: 1000000000
, length: function (n, key) { return (sizeof(n)+sizeof(key)) }
, dispose: function (key, n) { console.log("DELETED: "+key) }
, maxAge: 1000 * 60 * 60 };
global.myCache = LRU(options);