# express-cache-transport

> Express middleware for caching requests

Latest version **0.4.2** (published 2025-02-26) · MIT license · 0 weekly downloads

## Install

```sh
npm install express-cache-transport
pnpm add express-cache-transport
yarn add express-cache-transport
bun add express-cache-transport
```

## Health

**Score 35/100 (D)** — status: maintenance-mode.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: stale; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.4.2 |
| Published | 2025-02-26 |
| First published | 2021-08-31 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 2 |
| Unpacked size | 20.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 1 |
| Author | avezov |
| Maintainers | xvii |
| Keywords | express, middleware, cache |

## Links

- npm: https://www.npmjs.com/package/express-cache-transport
- Repository: https://github.com/avezov/express-cache-transport
- Issues: https://github.com/avezov/express-cache-transport/issues
- npm.io page: https://npm.io/package/express-cache-transport

## Dependencies (2)

- [cookie](https://npm.io/package/cookie.md) ^1.0.2
- [cross-fetch](https://npm.io/package/cross-fetch.md) ^4.1.0

## Alternatives

- [memory-cache](https://npm.io/package/memory-cache.md) — 795.0K weekly downloads
- [@httptoolkit/proxy-agent](https://npm.io/package/@httptoolkit/proxy-agent.md) — 11.2K weekly downloads
- [express-cache-controller](https://npm.io/package/express-cache-controller.md) — 5.3K weekly downloads
- [http-cache-middleware](https://npm.io/package/http-cache-middleware.md) — 4.5K weekly downloads
- [cache2](https://npm.io/package/cache2.md) — 1.5K weekly downloads

## Recent versions

- 0.4.2 (latest) — 2025-02-26
- 0.4.1 — 2025-02-26
- 0.4.0 — 2025-02-26
- 0.3.0 — 2025-02-25
- 0.2.0 — 2022-07-14
- 0.1.3 — 2021-12-09
- 0.1.2 — 2021-10-19
- 0.1.1 — 2021-09-03
- 0.1.0 — 2021-08-31

## README

# express-cache-transport

Кеширование запросов к API.

# Installation

```bash
npm install --save express-cache-transport
```

# Example

```js
import cacheTransport from 'express-cache-transport';

const cacheConfig = [
  {
    path: '/kalinka',
    destination: 'http://example.com/hohloma',
    ttl: 60 * 1000,
  },
  {
    path: '/malinka',
    destination: 'http://example.com/ushanka',
    ttl: 60 * 1000,
    redirectOnError: false,
    onError(error, req, res) {
      res.send('custom item error')
    },
    headers: {
      'X-Secret-Header': '123abc'
    }
  }
];

const transportApp = express();
transportApp.use(cacheTransport({
  cacheConfig
}));

const app = express();
app.use('/cachetransport', transportApp);
app.listen(3000);
```

# Parameters
### cacheConfig:

```js
[
  {
    // исходный URL
    path: '/malinka',

    // целевой URL с данными, которые необходимо закешировать
    destination: 'http://example.com/ushanka',

    // время жизни кеша в мс
    ttl: 60 * 1000,

    // делать редирект на целевой URL в случае возникновения ошибки
    redirectOnError: false,

    // свой обработчик ошибок со стороны целевого URL
    onError(error, req, res) {
      res.send('custom item error')
    }
  }
]
```

### express-cache-transport:

```js
transportApp.use(cacheTransport({
  cacheConfig,

  // добавить эндпоинты для отладки
  debug: true,

  // использовать проброс куки к целевому URL
  useCookie: true,

  // пользовательский алгоритм генерации ключа для кеширования
  computeHash: ({ search, cookies }) => {
    return `${search}#${cookies.language}`
  },
}));
```

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