Skip to content

Latest commit

 

History

History
102 lines (73 loc) · 2.62 KB

README.zh-CN.md

File metadata and controls

102 lines (73 loc) · 2.62 KB

memoizee-proxy

Build Status NPM Version

基于 Proxy 的备忘录

开发历程可以参考博客 手写一个基于 Proxy 的缓存库

特性

  • 适用于任何类型,任意长度的函数参数 – 可选序列化。
  • 支持 Promise 和异步函数。
  • 可配置 weak 提供 WeakMap(友好的垃圾回收)。
  • 可以手动管理缓存。
  • 使用 LRU 进行缓存限制。
  • 可选的引用计数器模式,允许更复杂的缓存管理。
  • 单元测试。

安装

npm install memoizee-proxy

或者

yarn add memoizee-proxy

API

参数 说明 类型 默认值
normalizer 基于当前参数生成唯一值 (args: any[]) => string Array.from(argument).join(',')
weak 是否使用 WeakMap boolean false
maxAge 超时时长,过时删除 number undefined
max 存储的最大项目数 number undefined
manual 启用手动管理 boolean false
refCounter 启动引用计数 boolean false
dispose 在从缓存中去除之前的回调函数 (value: T) => void undefined
closeable 提供是否使用缓存函数 boolean false

用法

import {memoizee} from 'memoizee-proxy'

var fn = function(one, two, three) {
  /* ... */
};

var memoized = memoizee(fn);

memoized("foo", 3, "bar");
memoized("foo", 3, "bar"); // Cache hit
var afn = function(a, b) {
	return new Promise(function(res) {
		res(a + b);
	});
};
memoized = memoize(afn, { promise: true });

memoized(3, 7);
memoized(3, 7); // Cache hit

Changelog

0.1.9

  • 构建工具由 microbundle 修改为 tsdx

0.1.6

  • 添加 closeable 参数以便操作缓存开启和关闭

0.1.3

  • 修改打包工具为 Rome(修改默认导出)
  • 导出其他两种 cache 类 ExpiredLRUCache RefCache

0.0.4

  • 修复 cacheRef clear 方法缺少 cacheRef 清理。
  • 删除 “max” 和 “maxAge” 不能同时存在。

0.0.3

  • 修复配置 max,如果添加的值大于等于 max 将会报错

0.0.2

  • 基本完成,添加了 max, maxAge 提供数据管理。
  • 添加了 manual,可以手动控制缓存。
  • 添加了引用计数缓存。
  • 添加 dispose 函数,可以在删除数据时调用控制 value。
  • 添加单元测试。

0.0.1

  • 基本可用,添加了 "normalizer", "weak", "timeout" 参数