dispose()函数如何在lru-cache中正常工作?

时间:2018-11-12 11:34:57

标签: javascript node.js caching lru

问题:

据我所知,每次缓存不足时都会调用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);

0 个答案:

没有答案