Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/smt/fiji
A tiny sessionStorage/localStorage cache
https://github.com/smt/fiji
Last synced: about 2 months ago
JSON representation
A tiny sessionStorage/localStorage cache
- Host: GitHub
- URL: https://github.com/smt/fiji
- Owner: smt
- License: mit
- Created: 2014-11-03T17:13:34.000Z (about 10 years ago)
- Default Branch: master
- Last Pushed: 2015-08-11T17:50:35.000Z (over 9 years ago)
- Last Synced: 2024-11-17T09:31:47.308Z (about 2 months ago)
- Language: JavaScript
- Homepage:
- Size: 207 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
fiji.js
=======Fiji is a lightweight library for proxying localStorage and sessionStorage. Since we know accessing these storage mechanisms is [slower than accessing object properties](http://jsperf.com/localstorage-vs-objects/26), one way to realize a small performance gain, as well as introduce some caching logic, is to access a native JS data structure most of the time, only going back to sessionStorage or localStorage if the data in our object is considered stale.
This library is more of a thought experiment than a tool that is inherently useful. However, Fiji is free to use as is. Constructive feedback and suggestions are most welcome.
Usage
-----Create a new instance of Fiji on your page, passing in the desired options. All options are... optional. The default option values are shown below.
```javascript
var fiji = new Fiji({
ns: 'Fiji', // The name to use for the localStorage and sessionStorage items
ttl: 86400000, // Number of seconds till sessionStorage item expiry
longTtl: 2592000000, // Number of seconds till localStorage item expiry
debug: false // Turn debug mode on, which enables extra logging output
});
```Cache objects are stored internally with the following structure:
```javascript
{
"id": "KEY_STRING",
"value": 12345,
"expires": Fri Oct 31 2014 17:27:16 GMT-0400 (EDT)
"isLongTerm": false
}
```This an object for sessionStorage. The only difference for a localStorage object is that the `isLongTerm` property would have been set to true.
Internally, cache objects are serialized with `JSON.stringify` prior to being saved to sessionStorage/localStorage, and de-serialized with `JSON.parse` immediately after retrieval.
Cache objects are saved atomically to storage under a common namespace (`Fiji` by default).
API
---Once you have created an instance of Fiji, referred to henceforth as **fiji**, you may call the following methods on it:
### fiji.get(key)
Returns the value of a cache object with the given key/id. If the data is determined to be expired, the appropriate storage mechanism will be queried.
### fiji.set(key, value, [isLongTerm])
Sets the value of a cache object with the given key/id, and optionally, the `isLongTerm` property to denote localStorage as opposed to the default, which is sessionStorage.
### fiji.del(key, [confirmDeleteAll])
Deletes the cache object with the given key/id, as well as its sessionStorage/localStorage cousin. If `true` is passed as the optional second argument, the entire Fiji cache is reset.
### fiji.list()
Returns an object representation of all cached key/value pairs. Uses `fiji.keys` and `fiji.get` to retrieve a dataset of appropriate freshness.