1.0.3 • Published 5 years ago

restify-request-cache v1.0.3

Weekly downloads
5
License
MIT
Repository
github
Last release
5 years ago

restify-request-cache

Wrapper function for a restify route handler, to cache the request results using memcache.

Table of contents

Why this package exists

Currently there are limited caching packages out there that support Restify. For this reason I have made a small package specifically for Restify to cache requests very easily using Memcached.

Installation

NPM

npm install restify-request-cache

YARN

yarn add restify-request-cache

Then require into your project as followed:

const { Memcached, restifyRequestCache } = require('restify-request-cache');

How to use

Example

const restify = require('restify');
const {
  Memcached,
  restifyRequestCache,
} = require('restify-request-cache');

const server = restify.createServer();
const memcached = new Memcached('172.17.0.2:11211', {} /* Memcached options */);

server.get(
  '/hello/:name', // Route path
  /**
   * This is where we wrap the restifyRequestCache method
   * around our normal restify route handler.
   */
  restifyRequestCache(async (req, res, next) => {
    res.send(200, req.params.name, {});
    next();
  }, memcached, {} /* options */ ),
);


server.listen(8080, () => {
  // eslint-disable-next-line no-console
  console.log('%s listening at %s', server.name, server.url);
});

Options

Currently the following options are used, which can be overwritten when passing an Object as third argument to the restifyRequestCache method.

  • ttl: Number number of seconds the cached object will remain.
  • hash.alghorithm: String alghorithm used to create hash from request (will be used as key in cache).
  • hash.inputEncoding: String encoding of input data.
  • hash.digest: String encoding of output data (cache key).
const defaultOptions = {
  ttl: 10,
  hash: {
    alghorithm: 'md5',
    inputEncoding: 'utf8',
    digestEncoding: 'hex',
  },
};

Memcached

Setting up

To read more about how to set up Memcached, click on the following link: https://www.npmjs.com/package/memcached.

Server

A quick way to start using Memcached with Docker: https://hub.docker.com/_/memcached.

What to expect in future releases

  • In-memory support.
  • Redis support.
  • The ability to bust cached requests.
1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago