angular-client-cache
v1.0.0
Published
Client side cache with compression in angular
Downloads
8
Maintainers
Readme
angular-client-cache
Local storage and $cacheFactory wrapper for angular. Also has functionality to compress items to be stored in local storage.
Assists with the issue of low (2.5-10MB~) storage limits. Example case - had 5.12MB of localStorage data - this was compressed to 500kb.
Tests run across the lastest versions of IE/Firefox/Chrome
Uses http://caniuse.com/#search=web%20storage
Written in typescript
##Get Started
(1) Grab the npm package
$ npm install lz-string angular-client-cache --save
or grab the bower package
$ bower install angular-client-cache --save
(2) Include angular-client-cache.js
from the dist and lz-string.js
in your index.html
after angular.
(3) Add 'ClientCache'
to your main module's list of dependencies.
(4) Inject 'ClientCacheService' and use it!
Usage info:
set(key: string, value: any): void;
get<T>(key: string): T;
tryGetSet<T>(key: string, apiCall: Function, objectBuilder?: Function): ng.IPromise<T>;
configure(options: IStorageOptions): void;
remove(key: string): void;
removeAll(): void;
Example usages: (note: the enum StorageType can only be used if you are using typescript - the values for pure js are Local - 0, Session - 1 and All - 2)
//set:
var value = 'storeMePlz';
clientCache.set('key', value);
//get:
clientCache.get('key');
// tryGetSet - this will attempt to get the value from the $cacheFactory, if the value doesn't exist it will perform the API call you supply - then set that response in local/$cacheFactory storage. You can optionally add a builder to build the object from the response.
clientCache.tryGetSet('key', $http.get('/api/blah'));
// or
var builder = function(itemToBuild) { return { something: new Date(itemToBuild.date); }};
clientCache.tryGetSet('key', $http.get('/api/blah'), builder);
// configure
clientCache.configure({ useCompression: true });
// remove
clientCache.remove('key');
// removeAll
clientCache.removeAll();
```
Options:
``` javascript
storagePrefix?: string;
useCompression?: boolean;
```
Dependencies:
LZ-string (https://github.com/pieroxy/lz-string/),
Angular