npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

mojax-cache

v1.0.0

Published

mojax request cache middleware

Downloads

18

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

Functions

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