# restify-request-cache

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

Latest version **1.0.3** (published 2019-02-22) · MIT license · 0 weekly downloads

## Install

```sh
npm install restify-request-cache
pnpm add restify-request-cache
yarn add restify-request-cache
bun add restify-request-cache
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.3 |
| Published | 2019-02-22 |
| First published | 2019-02-20 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 104.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | Jesse Spenkelink |
| Maintainers | jessespenkelink |

## Links

- npm: https://www.npmjs.com/package/restify-request-cache
- Repository: https://github.com/jessespenkelink/restify-request-cache
- Homepage: https://github.com/jessespenkelink/restify-request-cache#readme
- Issues: https://github.com/jessespenkelink/restify-request-cache/issues
- npm.io page: https://npm.io/package/restify-request-cache

## Dependencies (1)

- [memcached](https://npm.io/package/memcached.md) ^2.2.2

## Recent versions

- 1.0.3 (latest) — 2019-02-22
- 1.0.2 — 2019-02-21
- 1.0.1 — 2019-02-20
- 1.0.0 — 2019-02-20

## README

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

## Table of contents
- [restify-request-cache](#restify-request-cache)
  - [Table of contents](#table-of-contents)
  - [Why this package exists](#why-this-package-exists)
  - [Installation](#installation)
    - [NPM](#npm)
    - [YARN](#yarn)
  - [How to use](#how-to-use)
    - [Example](#example)
    - [Options](#options)
  - [Memcached](#memcached)
    - [Setting up](#setting-up)
    - [Server](#server)
  - [What to expect in future releases](#what-to-expect-in-future-releases)

## 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`: <b>Number</b> number of seconds the cached object will remain.
- `hash.alghorithm`: <b>String</b> alghorithm used to create hash from request (will be used as key in cache).
- `hash.inputEncoding`: <b>String</b> encoding of input data.
- `hash.digest`: <b>String</b> 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: <br>https://www.npmjs.com/package/memcached.
### Server
A quick way to start using Memcached with Docker: <br>https://hub.docker.com/_/memcached.

## What to expect in future releases
- In-memory support.
- Redis support.
- The ability to bust cached requests.

---
_Source: https://npm.io/package/restify-request-cache · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
