Skip to content
Automatically generate etags for HTTP responses, for Fastify
JavaScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
benchmarks
test
.gitignore
.npmignore
LICENSE
README.md
azure-pipelines.yml
example.js
fnv1a.js
index.js
package.json

README.md

fastify-etag

Automatically generate HTTP etags and return 304 when needed, according to RFC2616-sec13. A plugin for Fastify.

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'.

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

You can’t perform that action at this time.