Skip to content

fastify/fastify-etag

master
Switch branches/tags
Code

Latest commit

Bumps [tsd](https://github.com/SamVerschueren/tsd) from 0.21.0 to 0.22.0.
- [Release notes](https://github.com/SamVerschueren/tsd/releases)
- [Commits](SamVerschueren/tsd@v0.21.0...v0.22.0)

---
updated-dependencies:
- dependency-name: tsd
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
34fc63a

Git stats

Files

Permalink
Failed to load latest commit information.

@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