Adding compression (gzip/brotli) for your HTTP server in Node.js.
http-compression adds compression for your HTTP server in Node.js by:
$ npm install http-compression --save
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')
})
The compression(options)
function returns an Express style middleware of the form (req, res, next)
.
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.
Type: object
Default: { brotli: 1, gzip: 1 }
The compression effort/level/quality setting, used by both Gzip and Brotli. The scale range is:
The library uses uses the most efficiency level by default determined by a benchmark.
Type: boolean
Default: true
Enables response compression using Brotli for requests that support it. as determined by the Accept-Encoding
request header.
Type: boolean
Default: true
Enables response compression using Gzip for requests that support it, as determined by the Accept-Encoding
request header.
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.
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 · X @Kikobeats