http-compression
http-compression copied to clipboard
Adding compression (gzip/brotli) for your HTTP server in Node.js.
http-compression
http-compression adds compression for your HTTP server in Node.js by:
- No dependencies (< 1kB).
- Express style middleware support.
- Auto detect the best encoding to use (gzip/brotli).
Install
$ npm install http-compression --save
Usage
If you are using an Express style framework, you can add it as middlware:
const compression = require('http-compression')
const express = require('express')
express()
.use(compression({ /* see options below */ }))
.use((req, res) => {
// this will get compressed:
res.end('hello world!'.repeat(1000))
})
.listen(3000)
Otherwise, just pass req, res
primitives to it:
const compression = require('http-compression')({ /* see options below */ })
const { createServer } = require('http')
const server = createServer((req, res) => {
compression(req, res)
res.end('hello world!'.repeat(1000))
})
server.listen(3000, () => {
console.log('> Listening at http://localhost:3000')
})
API
The compression(options)
function returns an Express style middleware of the form (req, res, next)
.
Options
threshold
Type: Number
Default: 1024
Responses below this threshold (in bytes) are not compressed. The default value of 1024
is recommended, and avoids sharply diminishing compression returns.
level
Type: Number
Default: -1
The compression effort/level/quality setting, used by both Gzip and Brotli. The scale ranges from 1 to 11, where lower values are faster and higher values produce smaller output. The default value of -1
uses the default compression level as defined by Gzip (6) and Brotli (6).
brotli
Type: boolean
Default: true
Enables response compression using Brotli for requests that support it. as determined by the Accept-Encoding
request header.
gzip
Type: boolean
Default: true
Enables response compression using Gzip for requests that support it, as determined by the Accept-Encoding
request header.
mimes
Type: RegExp
Default: /text|javascript|\/json|xml/i
The Content-Type
response header is evaluated against this Regular Expression to determine if it is a MIME type that should be compressed.
Remember that compression is generally only effective on textual content.
License
Thanks to developit for written the original code implementation for polka#148.
http-compression © Kiko Beats, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.
kikobeats.com · GitHub Kiko Beats · Twitter @Kikobeats