An opinionated file server. Designed to sit behind a CDN.
sha256
etags and consequential 304s- Caches
fs.stat()
calls - Caches etag calculations
- OPTIONS and 405 support
index.html
files- Optionally serve hidden files
- Caches gzipped versions of files
- SPDY Push support
Does not support:
- Dynamic files - assumes static files never change. You will have to delete files from the cache yourself if files change.
- Directory listing
- Path decoding
var app = require('koa')()
app.use(require('compress')())
app.use(require('koa-file-server')(options))
Options are:
root
<process.cwd()> - root directory. nothing above this root directory can be servedmaxage
- cache control max ageetag
- options for etagsalgorithm
- hashing algorithm to useencoding
- encoding to use
index
- serveindex.html
fileshidden
- show hidden files which leading.
s
var send = require('koa-file-server')(options).send
serve.send()
allows you to serve files as a utility.
This is helpful for arbitrary paths.
The middleware also adds var file = yield* this.fileServer.send(path)
.
path
defaults to this.request.path.slice(1)
,
removing the leading /
to make the path relative.
For an example, see the middleware's source code.
var push = require('koa-file-server')(options).push
Optionally SPDY Push a file.
The middleware also adds var file = yield* this.fileServer.send(path, [opts])
.
Unlike send()
, path
is required.
path
must also be a relative path (without a leading /
) relative to the root
.
The push stream's URL will be '/' + path
.
Errors will be thrown on unknown files.
The only option
is priority: 7
.