New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

arrow-cache

Package Overview
Dependencies
Maintainers
1
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

arrow-cache

基于 `WebWorker` 的缓存机制,提供可靠高性能的缓存,帮助构建高性能的 `webApp`。

  • 1.0.6
  • latest
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

arrow cache

Arrow Cache

基于 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

每个存入 Arrow Cache 的数据都会有一个 isActive 标记和一个 lifeCount 标记。

isActive: 当数据存在于内存中时,证明它是活跃的,这时候该数据的 isActiveTrue,如果它被写入了磁盘,这时候变为 False 代表它是不活跃的。

lifeCount: 用来帮助 ArrowCount 的标记清除机制,每隔一段时间(默认是 10min,可以通过设置 clearDuration 来更改)会检查当前容器中的数据的 lifeCount 是否为 0(初始化是 2),当 lifeCount 为 0 时,会将这个数据标记为 imminentDead 表示为可以被清除的,然后会将所有标记为 imminentDead 的数据持久化到磁盘。

Usage

# install
yarn add arrow-cache
npm install arrow-cache
/** Usage */
const cache = new ArrowCache();

cache.setItem("name", "Jon");

Example

Examples 里有一个 Counter 的例子,可以呈现一种虚假的“常驻内存”,在刷新页面后依然可以拿到上次的计数,它的工作原理是每次存放的时候都会被持久化,这样做会有损伤性能,如果不是很必要,请不要使用它。这是因为 WebWorker 的生命周期导致的,WebWorker 会在页面关闭时销毁,我们很难找到一个恰当的时机发起一次 IO 让它把数据持久化下来。

see example/counter.

Options

你可以在实例化 ArrowCache 的时候传递一个 Options,可用属性如下:

isPermanentMemory [Boolean]: 标记是否为“常驻内存”,如果开启此项,Arrow Cache 会在必要的时候缓存你的数据到磁盘,下一次刷新页面的时候将它读到内存,调用者会感受到它一直存在于内存中。

clearDuration [Number]: 设置 Arrow Cache 的清除周期时间。

APIs

v1.0.0

LICENSE

MIT.

FAQs

Package last updated on 29 Feb 2020

Did you know?

Socket

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc