blob: 3a7c54bb2f8d7d648e7548afcb125082fd12b75b [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