blob: bc93a888e2b28fa88afb4784c33e09643e9dde75 [file] [view] [edit]
# jxl Content-Encoding explained
## What’s all this then?
HTTP Content-Encoding allows transfer of resources in a compressed form.
Most popular Content-Encodings `deflate` (`gzip`) and `br` are LZ77-based general-purpose data compressors; those fit well for compression of HTML, JS and CSS.
Video and image resources take 1-st and 2-nd place in the Internet traffic volume chart. Those are considered succinct.
However, one of the most popular image formats JPEG could be "repacked" to a more dense form.
`jxl` Content-Encoding allows ~22% traffic reduction for JPEG images.
## Getting started
First, install appropriate server plugin (e.g. `ngx_brunsli` for NGINX or `mod_brunsli` for Apache from [https://github.com/google/brunsli/tree/master/contrib](contrib)).
Now server is capable to respond with compressed resources when it sees appropriate encoding in 'Accept-Encoding' header.
Restriction: it is likely, that browser will send `jxl` in 'Accept-Encoding' header only over encrypted connections (HTTPS) to avoid problems with faulty proxies.
## Links
Codec demo site: https://brunsli.dev/
Specification: https://arxiv.org/pdf/1908.03565.pdf