file-server
file-server copied to clipboard
file serving middleware for koa
Koa File Server
An opinionated file server. Designed to sit behind a CDN.
sha256etags and consequential 304s- Caches
fs.stat()calls - Caches etag calculations
- OPTIONS and 405 support
index.htmlfiles- 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
API
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 use encoding- encoding to use
index- serveindex.htmlfileshidden- show hidden files which leading .s
var file = yield* send(this, [path])
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 file = yield* push(this, path, [options])
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.