Cache solution which makes use of IndexedDB
storage in the browser to avoid reaching the size limits of localStorage
and sessionStorage
.
# NPM
npm i @estruyf/icache
# pnpm
pnpm i @estruyf/icache
# Yarn
yarn add @estruyf/icache
You can start using the cache service as follows:
import { CacheService, DateHelper, DateInterval } from '@estruyf/icache';
const cache = new CacheService(`EventCache`);
await cache.init();
// Write data to the cache
await cache.put(`YourCacheKey`, <data>, DateHelper.dateAdd(Date(), DateInterval.minute, 1));
// Read data from the cache
const eventData = await cache.get(`YourCacheKey`);
The CacheService
is the main class which you will use to interact with the cache. It has the following methods:
The init
method will initialize the cache. This will create the IndexedDB
database and the required tables.
const cache = new CacheService(`EventCache`);
await cache.init();
The get
method will read the data from the cache.
// When the cache key is not found, it will throw an error
const eventData = await cache.get<string>(`YourCacheKey`);
// If you want, you can also tell the service to not throw an error when the cache key is not found
const eventData = await cache.get<string>(`YourCacheKey`, false);
The put
method will write data to the cache. You can also define an expiration date for the data.
// If no expiration date is defined, the data will be stored for 1 hour
await cache.put(`YourCacheKey`, <data>);
// If you want to define an expiration date, you can do it as follows
await cache.put(`YourCacheKey`, <data>, DateHelper.dateAdd(Date(), DateInterval.minute, 1));
The delete
method will remove the data from the cache.
await cache.delete(`YourCacheKey`);
The flush
method will remove all the data from the cache.
await cache.flush();
The DateHelper
is a helper class which you can use to calculate the expiration date of your cache.
import { DateHelper, DateInterval } from '@estruyf/icache';
// Add 1 minute to the current date
const expirationDate = DateHelper.dateAdd(Date(), DateInterval.minute, 1);
The DateInterval
is an enum which you can use to define the interval you want to add to a date.
second
minute
hour
day
week
month
quarter
year
Check it out here: changelog
If you have feedback or issues, feel free to report them on the issue list of this project: estruyf/indexeddb-cache.