http-static
Function that creates static endpoints. Persists a certain amount of file contents in memory and purges the least used files first. Replaces fs.createReadStream
easy.
Install
npm i @jamen/http-static
Usage
createStatic(options)
Create static cache and functions. The options available are:
-
cacheThreshold
: A threshold in bytes for how much file contents to cache in memory. Defaults to0x500000
(5MiB). Use0
to disable cache. -
gzip
: Automatically create.gz
files associated with each file in memory. Defaults tofalse
.
let static = createStatic({ cacheThreshold: 0xFFFF })
static.readStream(file)
A replacement for fs.createReadStream
to keep frequently used files in memory, which can be streamed to an HTTP response object:
let static = createStatic()
createServer((request, response) => {
// ...
static.readStream(file).pipe(response)
})
Note: Because the files are cached in memory, changes on disk wont take effect unless the cache is removed (see below) or the cache is disabled (set cacheThreshold
to zero).
static.removeCache(file)
Removes a file from the cache. This is necessary if, for example, the file changed and you want to view the updates.
let static = createStatic()
// Read from disk
static.readStream('/tmp/foo.txt').pipe(...)
// Read cache from the previous read
static.readStream('/tmp/foo.txt').pipe(...)
// Remove cache
static.removeCache('/tmp/foo.txt')
// Read from disk again
static.readStream('/tmp/foo.txt').pipe(...)
static.setContentType(file, response)
A function to set the response content type (using the map below).
extToMime
An object mapping extensions to MIMEs, generated from mime-db
.
Note for contributors: This file is automatically generated from a script. To update it, run:
node scripts/create-ext-to-mime.js > lib/ext-to-mime.json