cache-point
v3.0.0
Published
Simple, filesystem-backed memoisation cache.
Downloads
853,210
Maintainers
Readme
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-point
- Cache ⏏
- new Cache([options])
- .dir : string
- .read(keys) ⇒ Promise
- .readSync(keys) ⇒ string
- .write(keys, content) ⇒ Promise
- .writeSync(keys, content)
- .getChecksum(keys) ⇒ string
- .clear() ⇒ Promise
- .remove() ⇒ Promise
- Cache ⏏
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 <[email protected]>.
Tested by test-runner. Documented by jsdoc-to-markdown.