Compress middleware for koa


Compress middleware for Koa
``js
const compress = require('koa-compress')
const Koa = require('koa')
const app = new Koa()
app.use(compress({
filter (content_type) {
return /text/i.test(content_type)
},
threshold: 2048,
gzip: {
flush: require('zlib').constants.Z_SYNC_FLUSH
},
deflate: {
flush: require('zlib').constants.Z_SYNC_FLUSH,
},
br: false // disable brotli
}))
`
- Lead: @jonathanong @jongleberry
- Team: @koajs/compress
`ts
function (mimeType: string): Boolean {
}
`
An optional function that checks the response content type to decide whether to compress.
By default, it uses compressible.
Minimum response size in bytes to compress.
Default 1024 bytes or 1kb.
The current encodings are, in order of preference: br, gzip, deflate.options[encoding] = {}
Setting will pass those options to the encoding function.options[encoding] = false
Setting will disable that encoding.
#### options.br
Brotli compression is supported in node v11.7.0+, which includes it natively.
As of v5.1.0, the default quality level is 4 for performance reasons.
An optional string, which specifies what encoders to use for requests without
Accept-Encoding.
Default identity.
The standard dictates to treat such requests as * meaning that all compressions are permissible,curl
yet it causes very practical problems when debugging servers with manual tools like , wget, and so on.defaultEncoding
If you want to enable the standard behavior, just set to *.
You can always enable compression by setting ctx.compress = true.ctx.compress = false
You can always disable compression by setting .
This bypasses the filter check.
`js``
app.use((ctx, next) => {
ctx.compress = true
ctx.body = fs.createReadStream(file)
})