@fastify/etag
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) => {
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