Security News
Opengrep Emerges as Open Source Alternative Amid Semgrep Licensing Controversy
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
arrow-cache
Advanced tools
基于 WebWorker
的缓存机制,提供可靠高性能的缓存,帮助构建高性能的 webApp
。
Arrow Cache
和许多缓存库一样,通过 Key-Value
来缓存数据,任何存入 Arrow Cache
的数据都会被第一时间放入内存。当放入的东西越来越多,内存会逐渐膨胀,Arrow Cache
会启动一个定时器来每隔一段时间做一次标记清除,这种做法会使得内存里都是热数据,进而控制内存。这些被标记的数据并不会马上从内存里被清除,而是持久化到硬盘,下次再用到这个数据的时候会先从内存里寻找,如果没有找到,会发起一起 IO 从硬盘上寻找,如果发现会将它读入内存并且初始化。
Typescript
构建,完整的代码提示和 API 描述WebWorker
,对缓存的任何操作只会对当前页面带来极少的开销使用者应该大致的了解 Arrow Cache
的 架构,以便更好的使用它,Arrow Cache
是一种典型的 C/S
结构,客户端通过跟服务端通信完成对缓存的操作,这里的客户端通常指代 Web
页面,服务端指代 Web Worker
,通过与 Web Worker
进行通信完成对缓存的操作。客户端通常是没有权限来直接操作缓存的,它能做的只有去“调用”服务端的方法。整体架构非常简单,图如下:
每个存入 Arrow Cache
的数据都会有一个 isActive
标记和一个 lifeCount
标记。
isActive
: 当数据存在于内存中时,证明它是活跃的,这时候该数据的 isActive
是 True
,如果它被写入了磁盘,这时候变为 False
代表它是不活跃的。
lifeCount
: 用来帮助 ArrowCount
的标记清除机制,每隔一段时间(默认是 10min,可以通过设置 clearDuration
来更改)会检查当前容器中的数据的 lifeCount
是否为 0(初始化是 2),当 lifeCount
为 0 时,会将这个数据标记为 imminentDead
表示为可以被清除的,然后会将所有标记为 imminentDead
的数据持久化到磁盘。
# install
yarn add arrow-cache
npm install arrow-cache
/** Usage */
const cache = new ArrowCache();
cache.setItem("name", "Jon");
Examples 里有一个 Counter 的例子,可以呈现一种虚假的“常驻内存”,在刷新页面后依然可以拿到上次的计数,它的工作原理是每次存放的时候都会被持久化,这样做会有损伤性能,如果不是很必要,请不要使用它。这是因为 WebWorker
的生命周期导致的,WebWorker
会在页面关闭时销毁,我们很难找到一个恰当的时机发起一次 IO 让它把数据持久化下来。
see example/counter.
你可以在实例化 ArrowCache
的时候传递一个 Options,可用属性如下:
isPermanentMemory
[Boolean]
: 标记是否为“常驻内存”,如果开启此项,Arrow Cache
会在必要的时候缓存你的数据到磁盘,下一次刷新页面的时候将它读到内存,调用者会感受到它一直存在于内存中。
clearDuration
[Number]
: 设置 Arrow Cache
的清除周期时间。
MIT.
FAQs
基于 `WebWorker` 的缓存机制,提供可靠高性能的缓存,帮助构建高性能的 `webApp`。
We found that arrow-cache demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Opengrep forks Semgrep to preserve open source SAST in response to controversial licensing changes.
Security News
Critics call the Node.js EOL CVE a misuse of the system, sparking debate over CVE standards and the growing noise in vulnerability databases.
Security News
cURL and Go security teams are publicly rejecting CVSS as flawed for assessing vulnerabilities and are calling for more accurate, context-aware approaches.