2.2.0 • Published 4 years ago
fastify-etag v2.2.0
fastify-etag
Automatically generate HTTP etags and return 304 when needed, according to RFC2616-sec13. A plugin for Fastify.
Install
npm i fastify-etagExample
'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
md5algorithm: 29679 req/s (median)sha1algorithm: 25935 req/s (median)fnv1aalgorithm: 42943 req/s (median)
No etag generation: 45471 req/s (median)
License
MIT