Обзор форматов сжатия протокольного уровня в http.
Бусырев Михаил
Зачем
2
Бусырев Михаил, busyrev@gmail.com
Content-encoding
Для клиентского кода и вёрстки всё прозрачно
3
Browser
accept-encoding: gzip, deflate, br
Server
content-encoding: gzip
Бусырев Михаил, busyrev@gmail.com
Какие форматы могут быть
4
Бусырев Михаил, busyrev@gmail.com
Что с поддержкой
5
Бусырев Михаил, busyrev@gmail.com
Распаковка
6
Бусырев Михаил, busyrev@gmail.com
ngx_http_gzip_module
gzip on;
7
Бусырев Михаил, busyrev@gmail.com
ngx_http_gzip_module
8
Бусырев Михаил, busyrev@gmail.com
16Mb json (быстрое сжатие)
9
gzip 1 | 0.13 s | 1.8 M |
brotli 0 | 0.03 s | 1.5 M |
brotli 4 | 0.15 s | 0.8 M |
Бусырев Михаил, busyrev@gmail.com
16Mb json (лучшее сжатие)
10
brotli 4 | 0.15 s | 0.8 M |
gzip 9 | 0.9 s | 0.98 M |
brotli 9 | 0.5 s | 0.55 M |
brotli 11 | 33.8 s | 0.44 M |
zopfli | 4.5 m | 0.9 M |
Бусырев Михаил, busyrev@gmail.com
4.6 Mb dds
11
gzip 1 | 0.052 s | 804 K |
gzip 9 | 0.778 s | 668 K |
brotli 0 | 0.014 s | 813 K |
brotli 4 | 0.046 s | 504 K |
brotli 9 | 0.229 s | 445 K |
brotli 11 | 4.876 s | 382 K |
zopfli | Долго, не засёк | 623 K |
Бусырев Михаил, busyrev@gmail.com
Предварительное сжатие
12
Бусырев Михаил, busyrev@gmail.com
Что как сжимается
png, jpg, video, audio, swf, docx, zip, 7z
html, js, css, dds, svg, json, txt.
13
Бусырев Михаил, busyrev@gmail.com
Итого
14
Бусырев Михаил, busyrev@gmail.com
Как это устроено у нас
15
caching nginx
nginx
Контент с разным сжатием по одному url?
С точки зрения http это разный контент
Серверу нужно проверить есть ли файл?
На стороне JS нельзя узнать какие сжатия поддерживаются
caching nginx
caching nginx
file
file.gz
file.br
Бусырев Михаил, busyrev@gmail.com
Как это устроено у нас
16
client
dynamic server
accept-encoding: gzip, deflate, br
main iframe
available: gzip, br
accept-encoding: gzip, deflate, br
gameFile.br
content-encoding: br
nginx
caching nginx
file
file.gz
file.br
Ссылки
Эта презентация https://goo.gl/TDU1QL
Док, из которого родилась презентация https://goo.gl/zNkpwB
Большая таблица сравнение https://goo.gl/fUmoUu
Будет пост на хабре, ждите
Бусырев Михаил
@aquahawk - телеграм
busyrev@gmail.com
17