https://github.com/ueffel/caddy-brotli
Brotli compression encoder for Caddy
https://github.com/ueffel/caddy-brotli
brotli brotli-compression caddy caddy-module caddy-plugin caddyserver compression go
Last synced: 5 months ago
JSON representation
Brotli compression encoder for Caddy
- Host: GitHub
- URL: https://github.com/ueffel/caddy-brotli
- Owner: ueffel
- License: mit
- Created: 2020-08-23T15:17:05.000Z (almost 6 years ago)
- Default Branch: master
- Last Pushed: 2025-05-08T10:56:39.000Z (about 1 year ago)
- Last Synced: 2025-05-08T11:43:54.691Z (about 1 year ago)
- Topics: brotli, brotli-compression, caddy, caddy-module, caddy-plugin, caddyserver, compression, go
- Language: Go
- Homepage:
- Size: 197 KB
- Stars: 51
- Watchers: 2
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Brotli for Caddy
This package implements a brotli encoder for [Caddy](https://caddyserver.com/).
Requires Caddy 2+.
Uses the pure Go Brotli implementation
This implementation is not high performance on better compression levels (5-12), so it is not recommended
to use this encoding as primary compression algorithm. Use zstd with a gzip fallback instead.
Zstd (klauspost/compress) at level `better` is 3x faster than Brotli at level 4 (similar compression ratios
on `Isaac.Newton-Opticks.txt` test data).
## Installation
```sh
xcaddy build --with github.com/ueffel/caddy-brotli
```
## Syntax
There will be the new encoding `br` available within the
[encode directive](https://caddyserver.com/docs/caddyfile/directives/encode)
```caddyfile
encode [] {
br []
}
```
`level` controls the compression level (ranges from 0 to 11), default is 4.
Example usages could look like this:
```caddyfile
encode br
```
```caddyfile
encode {
br 4
}
```
or together with gzip
```caddyfile
encode gzip br
```
```caddyfile
encode {
gzip 5
br 4
}
```
## Remarks
Update 2: From Caddy v2.4.0 onwards preferred order is implied by definition order.
Update: Since Caddy v2.4.0-beta.2 the preferred order of encodings can be set via `prefer` setting.
> There is currently no way to set a prefered order of content-encodings via
> caddy's configuration. The content-encoding is determined by the clients
> preference. In most cases that means a response is encoded with the first
> accepted encoding in the `Accept-Encoding` header of the request that the caddy
> also supports.
>
> Example:
>
> Caddyfile
>
> ```caddyfile
> encode gzip br
> ```
>
> * Request:
>
> ```plain
> [...]
> Accept-Encoding: deflate, gzip, br
> [...]
> ```
>
> Response will be:
>
> ```plain
> [...]
> Content-Encoding: gzip
> [...]
> ```
>
> * Request: (different order of encodings)
>
> ```plain
> [...]
> Accept-Encoding: deflate, br, gzip
> [...]
> ```
>
> Response will be:
>
> ```plain
> [...]
> Content-Encoding: br
> [...]
> ```