Expressjs automatically send etags. I would like to know how the etag is generated..is it based on the content that is generated dynamically by the get routine. or is there
At the time of writing (8th July 2014), weak ETags are generated using CRC32 (source) and strong ETags are generated using MD5 (source).
Based on what one of the contributors to Express says, you can specify whether to use the strong or weak ETags by:
app.enable('etag') // use strong etags
app.set('etag', 'strong') // same
app.set('etag', 'weak') // weak etags
It looks like you can also specify your own custom function to do the ETags like so:
app.set('etag', function(body, encoding){ /* return valid etag */ });
The NPM package fresh is also worth looking at, as it's used in Express for freshness checking (source1, source2).
As for your application, remember that you can override any response headers e.g. res.set('etag', 'my-awesome-etag-value')
before invoking res.send()
(or similar function). Further discussion (including advantages and disadvantages) can be found here: https://github.com/visionmedia/express/issues/2129#issue-34053148