mojax-cache

mojax request cache middleware

Usage no npm install needed!

<script type="module">
  import mojaxCache from 'https://cdn.skypack.dev/mojax-cache';
</script>

README

Getting started

Add mojax and mojax-cache to your project: npm install mojax mojax-cache --save

Require the two modules into your code, and create your mojax request instance:

var mojax = require("mojax")(),
    cache = require("mojax-cache");

mojax.use(cache());

How mojax uses middleware

Middleware are used to manipulate the request parameters before the actual HTTP request is started.

When you add middleware to a mojax instance, the middleware function gets added to an internal queue. Every time you make a request, the request parameters you have provided are piped through each middleware. Each middleware must return the request parameters object for the next middleware to be called. Not returning the request parameters object (i.e. returning null or undefined) is how you can cancel a request.

The mojax request method respects the following flow:

  1. make a request: req(params);
  2. your request parameters are piped through each middleware
  3. the middleware transform your request parameters
  4. the final (transformed) request parameters are used to send the HTTP request
  5. the HTTP request triggers callbacks, based on its progress

How mojax-cache works

Mojax-cache is a factory, when ever you call mojax cache you're creating a new cacheController, which is the middleware function you want to add to mojax. That's all you need to do.

inner workings

mojax-cache works by caching your successful GET requests by URL. The timestamp and body of each successful GET is cached.

When a new GET request is made, mojax-cache verifies if it has made the request before, if so it adds the If-Modified-Since header, wraps all onSuccess callbacks and adds a callback of it's own. From there, two things can happen:

  • server responds with 200: mojax-cache's callback will cache the successful request
  • server responds with 304: mojax-cache fetches the response data from its internal cache, and provides that to the onSuccess callbacks.

Modules

mojax-cache

Functions

module.exports()function
cacheController()object

mojax-cache

module.exports() ⇒ function

Kind: global method of mojax-cache
Summary: creates a cacheController middleware instance
Returns: function - cacheController middleware function

cacheController() ⇒ object

Kind: global function
Summary: tracks all successful HTTP GET requests and caches their body response with a timestamp. Once a URL has been cached, if it is re-requested, the controller adds the "If-Modified-Since" header to the request params. If the server responds with a 304, the controller returns the cached data to the callbacks, allowing each callback to work unknowing of the 304 event.
Access: public
Params: object config - request configuration object