es-fresh
v0.0.11
Published
fresh rewrite in TypeScript with ESM targets
Downloads
275,230
Readme
es-fresh
This is a copy of @foxify/fresh package but with ESM and CommonJS targets.
HTTP response freshness testing.
Install
pnpm i es-fresh
API
import fresh from 'es-fresh'
fresh(reqHeaders, resHeaders)
Check freshness of the response using request and response headers.
When the response is still "fresh" in the client's cache true
is
returned, otherwise false
is returned to indicate that the client
cache is now stale and the full response should be sent.
When a client sends the Cache-Control: no-cache
request header to
indicate an end-to-end reload request, this module will return false
to make handling these requests transparent.
Example
import fresh from 'es-fresh'
import { createServer } from 'http'
function isFresh(req, res) {
return fresh(req.headers, {
etag: res.getHeader('ETag'),
'last-modified': res.getHeader('Last-Modified'),
})
}
createServer((req, res) => {
// perform server logic
// ... including adding ETag / Last-Modified response headers
if (isFresh(req, res)) {
// client has a fresh copy of resource
res.statusCode = 304
res.end()
return
}
// send the resource
res.statusCode = 200
res.end('hello, world!')
}).listen(3000)
License
MIT © v1rtl