Gzip vs Brotli – Którą metodę kompresji powinieneś używać i dlaczego
Gzip stał się złotym standardem kompresji plików na początku lat 90., ale jeśli nadal go używasz w 2018 r., możesz rozważyć przejście na nowszą metodę kompresji.
Chociaż Gzip wciąż ma swoje miejsce w sercach wielu osób, twórcy stron internetowych coraz częściej sięgają po lepsze opcje, takie jak algorytm kompresji Brotli firmy Google.
Krótka historia kompresji plików
„G” w nazwie Gzip to skrót od GNU. GNU to open source, oparty na Uniksie system operacyjny, który został opracowany w latach 80. XX wieku. Do tego czasu Unisys i IBM opatentowały już własne algorytmy kompresji i dekompresji plików, co pozwoliło swoich maszynach do przechowywania większej ilości danych, dlatego programiści Jean-loup Gailly i Mark Adler stworzyli Gzip jako darmową alternatywę dla użytkowników GNU.
Nowy Gzip nie był tylko tanią podróbką; w rzeczywistości był szybszy niż jego chronieni prawami autorskimi konkurenci. W rezultacie ludzie nadal używają go do kompresji plików do dziś. Chociaż łatwo jest trzymać się tego, z czym czujesz się komfortowo, istnieją różne algorytmy kompresji, które obecnie zapewniają lepsze wyniki kompresji niż Gzip. I tu wkracza Brotli.
Co to jest Brotli?
Brotli to nowsza specyfikacja formatu danych, która wykorzystuje wiele algorytmów do bardziej wydajnego zagęszczania danych niż Gzip. W 2015 roku specyfikacja Brotli została uogólniona do kompresji strumienia HTTP z typem kodowania treści „br”.
Opracowany przez Jyrkiego Alakuijala i Zoltana Szabadkę, Brotli wykorzystuje te same algorytmy kompresji co Gzip, ale jest również obsługiwany przez słownik często używanych słów i fraz, aby zapewnić lepszy współczynnik kompresji.
Pamiętaj, że Gzip i Brotli powinny być używane tylko do kompresji plików tekstowych. Pliki binarne, takie jak JPEG i MP4, opierają się na własnych algorytmach kompresji specyficznych dla formatu. Jeśli spróbujesz skompresować plik JPEG za pomocą Brotli, wynikowy plik będzie w rzeczywistości większy niż oryginał.
Chociaż nie zawsze tak było, Brotli jest teraz obsługiwany przez wszystkie główne przeglądarki.
W przypadku, gdy przeglądarka, która nie obsługuje Brotli, zażąda zasobu ze strony dostarczającej pliki skompresowane w Brotli, serwer powróci do Gzip i dostarczy zakodowane zasoby obsługiwane przez przeglądarkę – pod warunkiem, że serwer jest prawidłowo skonfigurowany.
Co sprawia, że Brotli jest lepszy?
Według badań przeprowadzonych przez CertSimple :
- Pakiety JavaScript skompresowane za pomocą Brotli są o 14 procent mniejsze niż pakiety JavaScript skompresowane za pomocą Gzip.
- Pliki HTML skompresowane przez Broti są o 21 procent mniejsze niż ich odpowiedniki Gzip.
- Pliki CSS skompresowane przez Brotli są o 17 procent mniejsze niż te skompresowane przez Gzip.
Ponieważ większość witryn internetowych opiera się na wszystkich trzech typach zasobów, jest to znaczna różnica w rozmiarach zasobów w porównaniu z Gzip. Te oszczędności z kolei spowodują zauważalną poprawę wydajności Twojej aplikacji.
Gzip vs Brotli: Maksymalne wykorzystanie Brotli
Pomimo tego, co być może słyszałeś, kompresja zasobów za pomocą Brotli nie jest wolniejsza niż Gzip. To powiedziawszy, Gzip i Brotli oferują różne poziomy kompresji, a domyślne ustawienia Brotli mogą skutkować wolniejszą kompresją niż domyślne ustawienia Gzip. Będziesz musiał wprowadzić pewne zmiany w Brotli, aby uzyskać akceptowalną równowagę między rozmiarem pliku a szybkością kompresji.
Idealne ustawienie kompresji zależy od tego, co i kiedy kompresujesz. Dobrym punktem wyjścia jest Brotli 4 do szybszej kompresji zawartości dynamicznej. Z drugiej strony zasoby statyczne można wcześniej skompresować bardziej gęsto bez utraty szybkości, więc domyślne ustawienie „11″ jest bardziej odpowiednie dla takich treści.
Instalowanie Brotli na twoim serwerze internetowym
Dodanie obsługi Brotli zapewnia znaczne korzyści przy minimalnym wysiłku. W zależności od używanego oprogramowania serwera WWW określisz, jakiej metody integracji będziesz potrzebować, aby zintegrować Brotli. Poniżej przedstawiono kilka dostępnych opcji:
- Nginx ma rozszerzenie Brotli oferowane przez Google.
- Apache oferuje dedykowane rozszerzenie Brotli.
- Microsoft IIS nie oferuje żadnej oficjalnej obsługi Brotli, jednak istnieje moduł społeczności, który dodaje obsługę.
- Node.js jest podobny do Microsoft pod tym względem, że nie ma oficjalnego wsparcia, ale jest moduł społecznościowy.
Aby zademonstrować przykład szybkiej instalacji, powiedzmy, że używasz Nginx. W takim przypadku możesz zainstalować moduł ngx_brotli w następujący sposób:
cd nginx-1.x.x
$ ./configure --add-module=/path/to/ngx_brotli
$ make && make install
Następnie dodaj następujące elementy do bloku HTTPS (Brotli działa tylko przez HTTPS):
brotli on;
brotli_static on;
brotli_comp_level 4;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
Możesz modyfikować powyższe dyrektywy według własnego uznania.
Na koniec wprowadź następujące dane, aby ponownie uruchomić NGINX i zacząć czerpać korzyści:
sudo systemctl restart nginx
Używanie Brotli ze wstępnie skompresowanymi zasobami
Brotli doskonale nadaje się do dostarczania wstępnie skompresowanych zasobów znacznie szybciej niż Gzip. Wynika to z faktu, że możesz skompresować je na najwyższym poziomie Brotli (11), a następnie poprosić serwer źródłowy o ich odebranie na żądanie.
Ten rodzaj konfiguracji działa świetnie z Webpack, ponieważ dostępna jest wtyczka Webpack do automatycznego kompresowania zasobów statycznych, zarówno jako Gzip, jak i Brotli. Dlatego nie jest wymagana kompresja w locie, co oznacza oszczędność czasu spędzonego na kompresowaniu plików.
Dowiedz się więcej o tym, jak używać pakietu Webpack do generowania zasobów skompresowanych za pomocą narzędzia Brotli .
Czy Twój CDN obsługuje Brotli?
Aby w pełni czerpać korzyści z Brotli, potrzebujesz obsługującej ją sieci dostarczania treści . Na przykład KeyCDN wprowadził w zeszłym roku wsparcie Brotli dla wszystkich klientów bez dodatkowych kosztów. W związku z tym Twoja witryna nie tylko skorzysta na zmniejszonych rozmiarach plików dzięki lepszej kompresji Brotli, ale także skorzysta na zmniejszonych opóźnieniach dzięki buforowaniu zasobów na serwerach brzegowych bliżej odwiedzających.
Ta metoda wymaga, aby serwer źródłowy obsługiwał Brotli i aby rzeczywista kompresja odbywała się po stronie serwera źródłowego. Ponownie pomaga to zaoszczędzić czas i uniknąć konieczności kompresji w locie, która może zaszkodzić wydajności.
Gzip kontra Brotli: w skrócie
Niewielki wysiłek wymagany do dodania Brotli do serwera WWW jest wart znacznych oszczędności rozmiaru pliku. Chociaż Brotli może czasami działać wolniej przy najwyższych ustawieniach kompresji, można łatwo osiągnąć idealną równowagę między szybkością kompresji a rozmiarem pliku, dostosowując ustawienia.
Chociaż korzystanie z Brotli może zmienić szybkie aplikacje internetowe w szybsze, niekoniecznie sprawi, że powolne aplikacje będą szybkie. Ponieważ Brotli kompresuje tylko zasoby tekstowe, musisz zoptymalizować swoje obrazy w inny sposób. Jeśli jeszcze nie przeszedłeś na HTTP/2, może to mieć ogromny wpływ na wydajność Twojej aplikacji. Liczy się każda milisekunda, więc każde działanie, które podejmiesz w celu przyspieszenia aplikacji, zwiększa Twoje szanse na zatrzymanie użytkowników.