След като обявихме голямата новина, че поддържаме 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, можете да го използвате на нашия тестов сървър или да използвате други сайтове на нашия хостинг, които са със сигурна връзка.
Можете да оставите вашите въпроси и мнения тук в коментарите, или в социалните мрежи.