brotli

Новият стандарт за компресия Brotli

След като обявихме голямата новина, че поддържаме QUIC, сега ще обявим и друга.

Ние сме първият хостинг доставчик в България, поддържащ новия стандарт за компресия Brotli. Brotli е обявен за пръв път през 2015 г. от Google, като инструмент за по-добра компресия на шрифтовете. След това е добавен в Google Chrome, Android и Google Web Server (gws) през 2016 г, преминавайки стандартизиране през IETF и получи RFC 7932. След стандартизирането му, поддръжката за него е прибавена и във Firefox, Opera и Edge. От iOS 11 и macOS High Sierra (10.13), вече и Apple потребителите разполагат с Brotli.

Как Brotli е по-добър от deflate или gzip?

За да отговорим на този въпрос първо ще трябва да направим едно важно уточнение: deflate и gzip всъщност са едно и също нещо. Реално deflate е алгоритъмът за компресия, докато gzip е самият файлов формат, съдържащ файл (1 брой) компресиран с deflate. Тъй като нямаме възможност да използваме deflate без писане на приложения, които го използват, ще използваме gzip от команден ред и ще го сравним с Brotli от команден ред. За да покажем разликите с gzip ще използваме файловете от нашия сайт – index.html, all.css и all.js като тестови.

файл                  големина

index.html        63923

all.js                   191844

all.css                 266624

 

Започваме при компресия 0 Brotli или 1 при gzip, което е най-бързото компресиране.

файл                Brotli размер    gzip размер      Brotli време      gzip време

index.html      11104                   10764                  0.002                  0.003

all.js                  76250                 73331                   0.003                  0.006

all.css               52209                 50096                  0.004                  0.005

Както виждате, скоростите са малко по-добри при brotli, но компресията е по-зле.

 

Продължаваме при компресия 2 Brotli или 3 при gzip.

файл                 Brotli размер    gzip размер      Brotli време      gzip време

index.html         9835                   10188                 0.002                 0.003

all.js                    66422                 69056                0.005                  0.007

all.css                 43056                  45190                0.006                  0.006

Тук вече brotli повежда и по време на компресиране и по размер.

 

Следва компресия 5 Brotli или 6 при gzip. Това е текущата стойност на gzip за компресия и е най-доброто съотношение компресия/време.

файл                 Brotli размер    gzip размер      Brotli време      gzip време

index.html         8461                    9307                   0.004                  0.003

all.js                    60613                  62527                 0.012                   0.012

all.css                  35318                  37328                0.009                   0.010

Тук вече нещата по скорост се изравняват, но като размер brotli отново е по-добър.

 

И най-добрата компресия е 11 при Brotli или 9 при gzip, но отнема много повече време, отколкото останалите.

файл                 Brotli размер    gzip размер      Brotli време      gzip време

index.html         7325                   9211                    0.172                   0.005

all.js                    55748                 62434                 0.479                  0.014

all.css                  30986                36808                0.636                  0.014

Тук вече Brotli е категоричен победител по размер, но пък му отнема колосално време за компресия в сравнение с gzip.

От горните тестове могат да се направят няколко извода. При ниски нива на компресия двата алгоритъма показват подобно поведение с лек превес като скорост за Brotli и по-добра компресия при gzip. В средните нива на компресия Brotli категорично повежда като компресия при почти еднакви времена. Всъщност, на средни нива Brotli компресира много по-добре, дори от най-добрата компресия на gzip. В най-високите нива се получават най-добри резултати на компресия и за двата алгоритъма, с огромна преднина за Brotli. За съжаление, времената за компресиране при Brotli се увеличават неимоверно много (всъщност експоненциално) – като разликата е между 30 до 45 пъти повече време.

По отношение на декомпресия скоростите са почти еквивалентни между двата алгоритъма с лек превес на Brotli.

Как да активираме Brotli на сървърите на Jump?

Това е най-лесното. Активирали сме го вместо вас и вие не трябва да правите нищо. Така ако клиент се свърже и подаде това като заявка Accept-Encoding: gzip, deflate, brotli (т.е. поддържа и трите), нашите сървъри ще му върнат отговор компресиран с Brotli. Ако клиентът се свърже и подаде в заявката Accept-Encoding: gzip, deflate, то сървърите ще върнат резултат компресиран с gzip (както по-горе описахме, gzip и deflate всъщност са едно и също нещо). Ако клиентът не поддържа компресия, то резултата ще му бъде върнат некомпресиран.

И сега една лоша новина – Brotli е активиран само и единственно на потребители, чиито сайтове се зареждат през сигурна връзка (HTTPS). Което всъщност, заедно с QUIC, е може би поредната причина да се мигрира към сигурна връзка, което вече описахме в поредица от статии тук. Заедно с QUIC, Brotli помага на сайтовете под сигурна връзка да се зареждат малко по-бързо. Специално при Brotli, помощта е, че обемът от данни на сайтовете намалява, като при по-тежките и натоварени сайтове обема може да се измерва в мегабайти или дори гигабайти дневно. В Jump Hosting, като оптимален вариант за компресиране, без по-голямо натоварване на сървърите, се компресират с Brotli само статичните файлове, докато динамичните файлове генерирани от PHP, например, се компресират с gzip. Тоест, ако имаме WordPress или друга CMS система, то само HTML файлът ще се компресира с gzip, докато всички JS, CSS и други файлове ще бъдат компресирани с Brotli.

Ако желаете да експериментирате с Brotli, можете да го използвате на нашия тестов сървър или да използвате други сайтове на нашия хостинг, които са със сигурна връзка.

Можете да оставите вашите въпроси и мнения тук в коментарите, или в социалните мрежи.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *