StorageLRULRU 缓存实现
StorageLRU(storage-lru) 是 LRU 缓存实现,可以用在本地存储或者其他存储机制,支持一个类似的接口。
注意:这个库是使用 CommonJS 风格编写的,如果要在浏览器使用,需要使用 Browserify 和 Webpack 类似的工具。
主要特性:
-
可插拔的离线存储
-
统计数据
-
自定义的 PurgeComparator
-
优先级
-
自动清理
使用:
var StorageLRU = require('storage-lru').StorageLRU; var asyncify = require('storage-lru').asyncify; var lru = new StorageLRU(asyncify(localStorage), { purgeFactor: 0.5, // this controls amount of extra space to purge. purgedFn: function (purgedKeys) { console.log('These keys were purged:', purgedKeys); } }); console.log(lru.numItems()); // output 0, assuming the storage is clear lru.setItem('foo', 'bar', {}, function (err) { if (err) { // something went wrong. Item not saved. console.log('Failed to save item: err=', err); } }); lru.setItem('fooJSON', {foo: 'bar'}, {json: true}, function (err) { if (err) { // something went wrong. Item not saved. console.log('Failed to save item: err=', err); } }); lru.getItem('foo', {json: false}, function (err, value) { if (err) { // something went wrong, for example, can't deserialize console.log('Failed to fetch item: err=', err); return; } console.log('The value of "foo" is: ', value); }); lru.removeItem('foo', function (err) { if (err) { // something went wrong. Item not removed. } }); var stats = lru.stats();
评论