Store fetch JSON responses in localStorage with expire timers! And fetch only if the timer has expired.
- A wrapper on top isomorphic-fetch for JSON responses
- When data is fetched, it's stored in localStorage with an expire timer
- When data is reqeusted, it checks in the storage and only fetches if needed, otherwise it resolves the cached data.
- Optionally, the api call can be made when the browser is idle and the timer is udpated.
npm i --save fetch-unless-cached
-
Use the inbuilt cached fetch which caches response for 600 minutes.
import cachedFetch from "fetch-unless-cached";
-
Or create a custom cached fetch function with your own duration
import {createfetchUnlessCached} from "fetch-unless-cached"
/**
* Create a custom fetch function which caches response for 300 minutes
*/
const cachedFetch = createfetchUnlessCached(300)
function fetchMyData(){
/*
* cachedFetch is just isomorphic-fetch but coupled with cache
* Do not perform .then(res => res.json()) as this happens internally
*
*/
...
return cachedFetch('myapi.com').then(response => console.log(response))
}
Note: If you would like to fetch during an idle state you can set the second argument to true.
const cachedFetch = createfetchUnlessCached(300, true);
- isomorphic-fetch - Fetch api for node and browser
- lscache - localStorage caching with timers
- Works only with JSON responses