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 🙏

© 2026 – Pkg Stats / Ryan Hefner

@thinkeloquent/core-no-cache

v1.0.5

Published

Fastify plugin for setting no-cache headers on all responses

Downloads

12

Readme

@thinkeloquent/core-no-cache

Fastify plugin for setting no-cache headers on all HTTP responses.

Features

  • ✅ Sets no-cache headers on all responses globally
  • Overrides any existing Cache-Control headers
  • ✅ HTTP/1.0 compatibility with Pragma: no-cache
  • ✅ Legacy client support with Expires: 0
  • ✅ Configurable enable/disable option
  • ✅ Type-safe with Zod validation
  • ✅ Zero dependencies (except peer deps)
  • ✅ Comprehensive test coverage

Headers Set

This plugin sets the following HTTP headers on every response:

  • Cache-Control: no-cache, no-store, must-revalidate
  • Pragma: no-cache
  • Expires: 0

These headers ensure that browsers and proxies do not cache responses, always loading fresh content.

Installation

pnpm install @thinkeloquent/core-no-cache

Usage

Basic Usage

import Fastify from 'fastify';
import noCache from '@thinkeloquent/core-no-cache';

const server = Fastify();

// Register no-cache plugin
await server.register(noCache);

// All responses will now have no-cache headers
server.get('/api/data', async (request, reply) => {
  return { data: 'fresh data' };
});

await server.listen({ port: 3000 });

Configuration Options

import noCache from '@thinkeloquent/core-no-cache';

// Enable no-cache headers (default)
await server.register(noCache, {
  enabled: true,
});

// Disable no-cache headers
await server.register(noCache, {
  enabled: false,
});

Options

| Option | Type | Default | Description | |--------|------|---------|-------------| | enabled | boolean | true | Enable or disable no-cache headers |

When to Use

Development Mode

Perfect for development environments where you want to ensure:

  • CSS and JavaScript changes are immediately visible
  • No stale cached content
  • Fresh API responses

SPA / Frontend Applications

Ideal for single-page applications (SPAs) where:

  • You want to prevent HTML caching
  • Assets are handled separately with specific cache policies
  • You need fresh content on every navigation

API Servers

Great for API servers where:

  • Data changes frequently
  • Cache invalidation is complex
  • You want guaranteed fresh responses

When NOT to Use

Production Static Assets

Don't use this plugin if you serve static assets (images, fonts, compiled JS/CSS) that should be cached for performance.

High-Traffic Production APIs

For production APIs with high traffic, consider:

  • Implementing proper cache strategies (ETags, conditional requests)
  • Using this plugin selectively on specific routes
  • Implementing CDN-level caching

How It Works

The plugin uses Fastify's onSend hook to set headers on all responses:

  1. Registers an onSend hook
  2. For every response, sets the three no-cache headers
  3. Overrides any existing Cache-Control headers set by routes

TypeScript Support

This plugin is written in TypeScript and provides full type definitions:

import type { NoCacheOptions, NoCacheResult } from '@thinkeloquent/core-no-cache';

Testing

Run tests:

pnpm test

Run tests with coverage:

pnpm run test:coverage

Development

Build the module:

pnpm run build

Type check:

pnpm run typecheck

License

MIT

Author

ThinkEloquent

Related Modules

  • @thinkeloquent/core-route-logger - Log all routes
  • @thinkeloquent/core-plugin-logger - Log all plugins
  • @thinkeloquent/core-observability - Logging, tracing, and metrics