Skip to content

Latest commit

 

History

History
67 lines (46 loc) · 1.92 KB

README.md

File metadata and controls

67 lines (46 loc) · 1.92 KB

fetch-unless-cached

Store fetch JSON responses in localStorage with expire timers! And fetch only if the timer has expired.


npm npm

What is it really?

  • 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.

Installation

npm i --save fetch-unless-cached

Usage

  1. Use the inbuilt cached fetch which caches response for 600 minutes.

    import cachedFetch from "fetch-unless-cached";
  2. 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);

Credits

  • isomorphic-fetch - Fetch api for node and browser
  • lscache - localStorage caching with timers

Caveats

  • Works only with JSON responses