Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Branch: master
Fetching contributors…

Cannot retrieve contributors at this time

178 lines (113 sloc) 3.8 kB

node-dummy-cache

A simple in memory cache to use with javascript.

Build Status

Installation

node.js

npm install node-dummy-cache

Import inside your code:

var cacheFactory = require('node-dummy-cache');

HTML

Download lib/dummy-cache.js.

Import inside HTML:

<script type="text/javascript" src="dummy-cache.js"></script>

For old browsers you will also need json2.js.

Usage

Simple key/value

var users = cacheFactory.create(cacheFactory.ONE_HOUR);

users.put(1, { name : 'A' });

var user = users.get(1);

Fetch when needed

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id, callback) {
    // Do complex stuff here
    callback(undefined, user);
});

users.get(1, function(err, user) {
    // You got it
});

Function style

Before:

function dummy(a, b, c, callback) {
    // Do complex stuff here
    callback(undefined, 'A', 'B');
};

dummy(1, 2, 3, function(err, data1, data2) {
    // You got it
});

Adding cache:

var dummy = cacheFactory.create(cacheFactory.ONE_HOUR, function (a, b, c, callback) {
    // Do complex stuff here
    callback(undefined, 'A', 'B');
});

dummy(1, 2, 3, function(err, data, data2) {
    // You got it
});

Mixed

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id, callback) {
    // Do complex stuff here
    callback(undefined, user);
});

users.get(1, function(err, user) {
    // You got it
});

users(1, function(err, user) {
    // You got it
});

var user = users.get(1); // Returns only if cached

user = users(1); // Returns only if cached

Complex

var users = cacheFactory.create(cacheFactory.ONE_HOUR, function (id1, id2, callback) {
    // Do complex stuff here
    callback(undefined, user, date);
});

users.get(1, 2, function(err, user, date) {
    // You got it
});

var user = users.get(1, 2); // Returns the user only if cached

users.put(1, 2, user); // Adds the user, but no date

API

All arguments passed to the get / put must be JSON serializable.

cacheFactory.create(maxAliveTimeMS: number, maxNotAccessedTimeMs: number, fetcher: function)

Creates a new cache.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access
  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number, fetcher: function)

Creates a new cache.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number, maxNotAccessedTimeMs: number)

Creates a new cache. All values must be added to cache using put.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation
  • maxNotAccessedTimeMs : Max time a value will stay in cache after its last access

cacheFactory.create(fetcher: function)

Creates a new cache. Values never expires.

Params:

  • fetcher : callback to fetch the data

cacheFactory.create(maxAliveTimeMS: number)

Creates a new cache. All values must be added to cache using put.

Params:

  • maxAliveTimeMS : Max time a value will stay in cache starting with its creation

cacheFactory.create()

Creates a new cache. Values never expires. All values must be added to cache using put.

License

MIT. Check LICENSE file.

Jump to Line
Something went wrong with that request. Please try again.