UNPKG

js-cache

Version:

Caching library supporting timeouts, events and external data sources

172 lines (103 loc) 4.33 kB
# Caching library for JavaScript and Node.js Caching library with support for timeouts, events and external data sources. ## Overview * [Usage in Node.js](#usage-in-nodejs) * [Usage in browsers](#usage-in-browsers) * [Instance](#instance) * [API](#api) * [External data source](#external-data-source) * [Events](#events) * [Developing](#developing) * [Building](#building) * [Testing](#testing) ## Usage in Node.js var cache = require('js-cache'); cache.set('lorem', 'ipsum', 60000); console.log(cache.get('lorem')); var myCache = new cache(); myCache.set('lorem', 'dolor', 60000); console.log(myCache.get('lorem')); ## Usage in browsers <script src="bundle/cache.js"></script> <script> cache.set('lorem', 'ipsum', 60000); console.log(cache.get('lorem')); </script> ## Instance It is possible to call the `cache` object directly: cache.set('lorem', 'ipsum'); console.log(cache.get('lorem')); or use it as a constructor to create a separate storage: var c2 = new cache(); c2.set('lorem', 'dolor'); console.log(c2.get('lorem')); ## API ### cache.set(`key`, `value`, `[ttl]`) Cache data or update and existing record. `key` Unique key identifying the cache `value` Cached value `ttl` Time to live in milliseconds (optional) ### cache.get(`key`, `[callback]`) Get cached value. Returns cached value (or undefined) if no callback was provided. Always returns undefined if callback argument is present. `key` Key identifying the cache `callback` Return value in callback if record exists in memory or on external resource (optional) ### cache.del(`key`) Delete cached data. Returns true if the record existed, false if not. `key` Key identifying the cache ### cache.clear() Clear all cached data. Returns number of cleared records. ### cache.size() Returns number of cached records. ### cache.debug() Returns internal object with cached records. ### cache.keys() Returns list of cached record keys. ## External data source It is possible to forward api requests to external handlers. They can be used for logging, storing in persistent database etc. The cache library will function as a temporary, in-memory layer. var c = new cache({ set: setHandler, get: getHandler, del: delHandler, clear: clearHandler }); All handlers are optional. `setHandler` is called with `key`, `value`, `ttl` on cache.set(). `getHandler` is called with `key`, `callback` on cache.get() when a callback is provided and the key is not present in the cache. The getHandler is required to execute `callback`. `delHandler` is called with `key` on cache.del(). It is not called when a cached record times out. `clearHandler` is called without arguments on cache.clear(). ## Events The cache library uses the Backbone event framework. Please refer to their [documentation](http://backbonejs.org/#Events) for a detailed overview. ### set , set:key Emitted when setting a value to a new record. cache.on('set', function(key, value, ttl){}); cache.on('set:lorem', function(value, ttl){}); cache.set('lorem', 'ipsum', 123); ### update, update:key Emitted when updating the value or ttl of a known record. cache.set('lorem', 'ipsum'); cache.on('update', function(key, value, ttl){}); cache.on('update:lorem', function(value, ttl){}); cache.set('lorem', 'ipsum', 123); ### del, del:key Emitted when deleting a record or when a cached record times out. cache.set('lorem', 'ipsum'); cache.on('del', function(key){}); cache.on('del:lorem', function(){}); cache.del('lorem'); ### clear Emitted when the cache gets cleared. cache.on('clear', function(size){}); cache.clear(); ## Developing The library is published to NPM and can be installed with the following command: $ npm install js-cache ## Building The scripts have to be bundled in order to use them in a browser. One of the tools you can use is browserify. $ sudo npm install browserify -g $ make browserify This will build the script in `bundle/cache.js` ## Testing Navigate to this module's repository and make sure you have the development modules installed: $ npm install Run the tests: $ npm test