HTTP Cache Middleware

1.4.1 · active · verified Wed Apr 22

http-cache-middleware is a high-performance connect-like HTTP cache middleware designed for Node.js applications. It leverages the popular `cache-manager` package, providing flexibility to integrate various storage engines like in-memory, Redis, and more. The library significantly reduces latency by enabling robust caching strategies, capable of improving response times from tens of milliseconds down to single digits. It supports custom `x-cache-timeout` and `x-cache-expire` headers for fine-grained control over cache entry and invalidation using glob patterns. Additionally, it transparently handles standard HTTP `Cache-Control` and `ETag` headers to facilitate browser-side caching and validation. The current stable version is 1.4.1, with recent updates indicating an active maintenance and development cadence focused on fixes and dependency updates, with minor cumulative releases.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize the HTTP cache middleware with `restana`, set a cache timeout for a GET endpoint, and invalidate it using a DELETE request with `x-cache-expire`.

import createCacheMiddleware from 'http-cache-middleware';
import restana from 'restana';

const middleware = createCacheMiddleware();
const service = restana();

service.use(middleware);

service.get('/cache-on-get', (req, res) => {
  setTimeout(() => {
    res.setHeader('x-cache-timeout', '1 minute');
    res.send('this supposed to be a cacheable response, fetched at ' + new Date().toISOString());
  }, 50);
});

service.delete('/invalidate-cache', (req, res) => {
  // Simulate a data change that requires cache invalidation
  console.log('Invalidating cache for /cache-on-get');
  res.setHeader('x-cache-expire', '*/cache-on-get');
  res.send('Cache invalidated');
});

const port = process.env.PORT || 3000;
service.start(port).then(() => {
  console.log(`Server started on port ${port}`);
  console.log(`Try: curl http://localhost:${port}/cache-on-get`);
  console.log(`Then: curl http://localhost:${port}/invalidate-cache`);
  console.log(`Then: curl http://localhost:${port}/cache-on-get again`);
});

view raw JSON →