race-cache 正在参加 2021 年度 OSC 中国开源项目评选,请投票支持!
race-cache 在 2021 年度 OSC 中国开源项目评选 中已获得 {{ projectVoteCount }} 票,请投票支持!
2021 年度 OSC 中国开源项目评选 正在火热进行中,快来投票支持你喜欢的开源项目!
2021 年度 OSC 中国开源项目评选 >>> 中场回顾
race-cache 获得 2021 年度 OSC 中国开源项目评选「最佳人气项目」 !
授权协议 MIT
操作系统 跨平台
软件类型 开源软件
所属分类 程序开发缓存系统
开源组织
地区 国产
投 递 者 随心_
适用人群 未知
收录时间 2020-12-14

软件简介

race-cache

确保依赖数据的高可用缓存函数。

执行步骤如下: 

Install

npm install --save race-cache

Usage

import { raceCache, raceCacheWithInfo } from 'race-cache'

async function getList(url){
  const data = await raceCache(url /*缓存Key*/, fetch(url))
  // or
  const info = await raceCacheWithInfo(url /*缓存Key*/, fetch(url))
  // info?.ok info?.timeout info?.error info.data
}

内置缓存在浏览器环境使用 localStorage,在 node.js 环境使用的原生 Map,可通过 cache 参数进行自定义缓存接口。

API

import { raceCache, raceCacheWithInfo, cache } from 'race-cache'

raceCache(key, promise[, option])
// or
raceCacheWithInfo(key, promise[, options])

// 内置缓存对象cache
cache.get
cache.set
cache.unset
cache.clear
cache.setCapacity
...

注: 内置缓存 LRU 容量默认为:99

interfaces

interface RaceCacheOptions<T> {
	// 内置缓存超时时间,单位:ms
	// 默认:3600 * 24 * 365 * 1000
	expire?: number;
	// 等待外部响应时间,超时后走缓存数据,单位:ms
	// 默认:0
	waitTime?: number;
	// 是否忽略promise的异常catch,并使用缓存数据
	// 默认:true
	ignoreError?: boolean;
	// 获取内部状态信息,如:数据是否超时、异常或正常的返回
	raceCallback?: (raceInfo: RaceInfo<T>) => void;
	// 自定义缓存接口:get,set
	cache?: {
        get: (key: string) => Promise<any>;
        set: (key: string, value: any, options?: CacheOptions | undefined) => Promise<void>;
  };
	// 超时触发回调,只在缓存存在的情况下触发
	onTimeout?: (value: GetPromiseResolveType<T>) => void;
	// 传入的 promise 触发 resolve 时调用
	onFulfilled?: (value: GetPromiseResolveType<T>) => void;
	// 传入的 promise 触发 reject 时调用
	onRejected?: (reason: any) => void;
}

interface RaceInfo<T> {
    // 正常返回标识
    ok?: boolean;
    // 超时返回标识
    timeout?: boolean;
    // 异常返回标识
    error?: any;
    // 返回数据
    data: GetPromiseResolveType<T>;
}

interface CacheOptions {
	// 缓存超时时间,单位:ms
	expire?: number;
}
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
lodash 命令注入漏洞
代码注入
lodash是一个提供模块化、性能和附加功能的现代 JavaScript 实用程序库。 4.17.21 之前的 Lodash 版本容易通过模板函数进行命令注入。
CVE-2021-23337 MPS-2021-2638
2022-08-08 20:52
shell-quote 安全漏洞
命令注入
shell-quote是开源的一个软件包。用于解析和引用 shell 命令。 shell-quote package存在安全漏洞,攻击者可利用该漏洞可以植入任意代码从而执行相关操作。
CVE-2021-42740 MPS-2021-34136
2022-08-08 20:52
Andrey Sitnik postcss 安全漏洞
Andrey Sitnik postcss是Andrey Sitnik开源的一个应用程序,用于使用JS插件进行样式转换。 在漏洞版本中该程序在源映射解析期间受到正则表达式拒绝服务(ReDoS)的攻击。
CVE-2021-23368 MPS-2021-4549
2022-08-08 20:52
nodejs 资源管理错误漏洞
拒绝服务
nodejs是是一个基于ChromeV8引擎的JavaScript运行环境通过对Chromev8引擎进行了封装以及使用事件驱动和非阻塞IO的应用让Javascript开发高性能的后台应用成为了可能。 nodejs-glob-parent 存在安全漏洞,该漏洞源于正则表达式拒绝服务。
CVE-2020-28469 MPS-2021-7827
2022-08-08 20:52
istanbul-reports 存在通过 window.opener 访问使用指向不受信任目标的 Web 链接漏洞
通过 window.opener 访问使用指向不受信任目标的 Web 链接
由于指向 https://istanbul 的链接中没有 rel 属性,因此该软件包的受影响版本容易受到反向 Tabnabbing 的攻击。
MPS-2022-13797
2022-08-08 20:52
uglify-js 存在ReDoS漏洞
ReDoS
uglify-js 是一个 JavaScript 解析器、压缩器、压缩器和美化工具包。此软件包的受影响版本容易通过 string_template 和 decode_template 函数受到正则表达式拒绝服务 (ReDoS) 的攻击。
MPS-2022-14112
2022-08-08 20:52
没有更多内容
加载失败,请刷新页面
点击加载更多
加载中
下一页
0 评论
1 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部