- ×
A client- and server-side multi-layer cache manager library
Filed under dataShow AllOnionSkin
OnionSkin is multi-layer cache manager library that works with Node.js and vanilla javascript
Installation
You can either install via npm
$ npm install onionskin
Or via bower
$ bower install onionskin
Or you can just grab a copy of it here
Basic Usage
// Library is exposed on the browser with browserify for API consistency with node.js var OnionSkin = require('onionskin'); // Initialize a pool var pool = new OnionSkin(); pool.get('my/key/path', function (err) { // Data is either inexistent or expired return slowFuncThatReturnsPromise(); }).then(function (value) { // The value that was either on cache or was just generated console.log(value); });
Documentation
You can find more usage examples at the website's Getting Started section Also there is the API Documentation
Need help?
You can:
- Talk to me at @onionskinjs
- Ask a question at StackOverflow
- Send me an email at contact@onionskin.io
Want to help?
So you decided you want to help... This is awesome!!! Follow this steps and I will be really glad to merge your work and add you to the contributors!
- Fork the project
Clone it and create a branch with the name of the feature you intend to add
$ git clone git@github.com:username/onionskin.git $ git checkout -b new-feature-name
Install the dependencies
$ bower install # for browser tests $ npm install # for node.js tests
Please add tests to your features.
``` mocha test/stash/drivers/*.js ``` you also can run the tests on browser ``` open test/index.html ```
- Send me a pull request
What is coming next
- WebSQL, Cassandra, MongoDB [, ... ] drivers
- Benchmarks
- More examples
Contributors
This project was created by @tadeuzagallo inspired by a PHP library named Stash and was originally Stash.js. If you want to join just follow the instructions, any help will be very welcome.
Changelog
1.0.1
- The function to generate missing cache should be passed as the last parameter to
pool.get
, although generating cachePromise.catch
is still supported the cache will never be unlocked ifitem.save
oritem.set
are not called. - Also when the cache generator function is passed as parameter, there is no need to call either
item.save
oritem.set
, just return the value you want to be cached and it will automatically saved and passed along to the promise chain.