Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kikobeats/http-compression
Adding compression (gzip/brotli) for your HTTP server in Node.js.
https://github.com/kikobeats/http-compression
brotli compression express expressjs gzip https javascript middleware nodejs
Last synced: about 19 hours ago
JSON representation
Adding compression (gzip/brotli) for your HTTP server in Node.js.
- Host: GitHub
- URL: https://github.com/kikobeats/http-compression
- Owner: Kikobeats
- License: mit
- Created: 2023-01-17T23:33:33.000Z (almost 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-07T16:00:44.000Z (about 1 month ago)
- Last Synced: 2024-10-30T19:04:24.276Z (15 days ago)
- Topics: brotli, compression, express, expressjs, gzip, https, javascript, middleware, nodejs
- Language: JavaScript
- Homepage:
- Size: 69.3 KB
- Stars: 50
- Watchers: 2
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.md
Awesome Lists containing this project
README
# http-compression
![Last version](https://img.shields.io/github/tag/Kikobeats/http-compression.svg?style=flat-square)
[![Coverage Status](https://img.shields.io/coveralls/Kikobeats/http-compression.svg?style=flat-square)](https://coveralls.io/github/Kikobeats/http-compression)
[![NPM Status](https://img.shields.io/npm/dm/http-compression.svg?style=flat-square)](https://www.npmjs.org/package/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
```bash
$ npm install http-compression --save
```## Usage
If you are using an Express style framework, you can add it as middlware:
```js
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:
```js
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: `object`
Default: `{ brotli: 1, gzip: 1 }`The compression effort/level/quality setting, used by both Gzip and Brotli. The scale range is:
- brotli: from 0 to 11.
- gzip: from -1 to 9.The library uses uses the most efficiency level by default determined by a [benchmark](bencharmk/index.mjs).
#### 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](https://github.com/developit) for written the original code implementation for [polka#148](https://github.com/lukeed/polka/pull/148).
**http-compression** © [Kiko Beats](https://kikobeats.com), released under the [MIT](https://github.com/Kikobeats/http-compression/blob/master/LICENSE.md) License.
Authored and maintained by [Kiko Beats](https://kikobeats.com) with help from [contributors](https://github.com/Kikobeats/http-compression/contributors).> [kikobeats.com](https://kikobeats.com) · GitHub [Kiko Beats](https://github.com/Kikobeats) · X [@Kikobeats](https://x.com/Kikobeats)