StorageLRULRU 緩存實(shí)現(xiàn)
StorageLRU(storage-lru) 是 LRU 緩存實(shí)現(xiàn),可以用在本地存儲或者其他存儲機(jī)制,支持一個類似的接口。
注意:這個庫是使用 CommonJS 風(fēng)格編寫的,如果要在瀏覽器使用,需要使用 Browserify 和 Webpack 類似的工具。
主要特性:
-
可插拔的離線存儲
-
統(tǒng)計(jì)數(shù)據(jù)
-
自定義的 PurgeComparator
-
優(yōu)先級
-
自動清理
使用:
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();評論
圖片
表情
