@fastify/etag
TypeScript icon, indicating that this package has built-in type declarations

4.1.0 • Public • Published

@fastify/etag

CI NPM version js-standard-style

A plugin for Fastify that automatically generates HTTP ETags and returns 304 when needed, according to RFC2616-sec13.

Install

npm i @fastify/etag

Example

'use strict'

const Fastify = require('fastify')
const Etag = require('@fastify/etag')

const app = Fastify()
app.register(Etag)

app.get('/', async (req, reply) => {
  return { hello: 'world' }
})

app.get('/manual-etag', async (req, reply) => {
  // This will disable automatic ETag generation
  // It will still return a 304 if the ETag matches
  reply.header('etag', '"foobar"')
  return 'world'
})

app.listen(3000)

Plugin Options

  • algorithm: all hashing algorithm that Node.js support, and 'fnv1a'. Default: 'fnv1a'.

  • weak: generates weak ETags by default. Default: false.

Acknowledgements

The fnv1a logic was forked from https://github.com/sindresorhus/fnv1a and adapted to support buffers.

Benchmarks

  • md5 algorithm: 29679 req/s (median)
  • sha1 algorithm: 25935 req/s (median)
  • fnv1a algorithm: 42943 req/s (median)
  • No ETag generation: 45471 req/s (median)

License

MIT

Package Sidebar

Install

npm i @fastify/etag@4.1.0

Version

4.1.0

License

MIT

Unpacked Size

30.6 kB

Total Files

17

Last publish

Collaborators

  • starptech
  • simoneb
  • coopflow
  • delvedor
  • matteo.collina
  • allevo
  • jsumners
  • zekth
  • rafaelgss
  • eomm
  • fox1t
  • airhorns
  • kibertoad
  • climba03003
  • galvez
  • simenb
  • gurgunday
  • metcoder95
  • fdawgs