cache-point

3.0.0 • Public • Published

view on npm npm module downloads Gihub repo dependents Gihub package dependents Node.js CI js-standard-style

cache-point

Simple, filesystem-backed memoisation cache. Use to cache the output of expensive operations speeding up future invocations with the same input.

Synopsis

import Cache from 'cache-point'
import { setTimeout as sleep } from 'node:timers/promises'

/* mock function to simulate a slow, remote request */
async function fetchUser (id) {
  await sleep(1000)
  return { id, name: 'Layla' }
}

class Users {
  constructor () {
    this.cache = new Cache({ dir: 'tmp/example' })
  }

  async getUser (id) {
    let user
    try {
      /* cache.read() will resolve on hit, reject on miss */
      user = await this.cache.read(id)
    } catch (err) {
      if (err.code === 'ENOENT') {
        /* cache miss, fetch remote user */
        user = await fetchUser(id)
        this.cache.write(id, user)
      }
    }
    return user
  }
}

console.time('getUser')
const users = new Users()
const user = await users.getUser(10)
console.timeEnd('getUser')
console.log(user)

The first invocation will take 1 second while the remote user is fetched.

$ node example/simple.js
getUser: 1.025s
{ id: 10, name: 'Layla' }

Since the cache is now warm, future invocations will be fast.

$ node example/simple.js
getUser: 17.07ms
{ id: 10, name: 'Layla' }

API Reference

cache-point

Cache ⏏

Kind: Exported class

new Cache([options])

Param Type
[options] object
[options.dir] string

cache.dir : string

Current cache directory. Can be changed at any time.

Kind: instance property of Cache

cache.read(keys) ⇒ Promise

A cache hit resolves with the stored value, a miss rejects with an ENOENT error code.

Kind: instance method of Cache
Throws:

  • ENOENT
Param Type Description
keys * One or more values to uniquely identify the data. Can be any value, or an array of values of any type.

cache.readSync(keys) ⇒ string

A cache hit returns the stored value, a miss returns null.

Kind: instance method of Cache

Param Type Description
keys * One or more values to uniquely identify the data. Can be any value, or an array of values of any type.

cache.write(keys, content) ⇒ Promise

Write some data to the cache. Returns a promise which resolves when the write is complete.

Kind: instance method of Cache

Param Type Description
keys * One or more values to index the data, e.g. a request object or set of function args.
content * the data to store

cache.writeSync(keys, content)

Write some data to the cache with a key.

Kind: instance method of Cache

Param Type Description
keys * One or more values to index the data, e.g. a request object or set of function args.
content * the data to store

cache.getChecksum(keys) ⇒ string

Used internally to convert a key value into a hex checksum. Override if for some reason you need a different hashing strategy.

Kind: instance method of Cache

Param Type Description
keys * One or more values to index the data, e.g. a request object or set of function args.

cache.clear() ⇒ Promise

Clears the cache. Returns a promise which resolves once the cache is clear.

Kind: instance method of Cache

cache.remove() ⇒ Promise

Clears and removes the cache directory. Returns a promise which resolves once the remove is complete.

Kind: instance method of Cache


© 2016-24 Lloyd Brookes <75pound@gmail.com>.

Tested by test-runner. Documented by jsdoc-to-markdown.

/cache-point/

    Package Sidebar

    Install

    npm i cache-point

    Weekly Downloads

    149,118

    Version

    3.0.0

    License

    MIT

    Unpacked Size

    19.2 kB

    Total Files

    6

    Last publish

    Collaborators

    • 75lb