Gzip vs Brotli – jakiej metody kompresji należy używać i dlaczego
Opublikowany: 2018-03-02Gzip stał się złotym standardem kompresji plików na początku lat 90., ale jeśli nadal używasz go w 2018 roku, możesz rozważyć przejście na nowszą metodę kompresji.
Chociaż Gzip nadal ma swoje miejsce w sercach wielu, twórcy stron internetowych coraz częściej sięgają po lepsze opcje, takie jak algorytm kompresji Google Brotli.
Krótka historia kompresji plików
„G” w Gzip to skrót od GNU. GNU to system operacyjny typu open source oparty na systemie Unix, 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, które pozwoliły ich maszynom przechowywać więcej 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 tanim podróbką; w rzeczywistości był szybszy niż jego konkurenci objęci prawami autorskimi. 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. Tu właśnie pojawia się Brotli.
Co to jest Brotli?
Brotli to nowsza specyfikacja formatu danych, która wykorzystuje wiele algorytmów do kondensacji danych wydajniej niż Gzip. W 2015 roku specyfikacja Brotli została uogólniona na kompresję strumienia HTTP z typem kodowania treści „br”.
Brotli, opracowany przez Jyrki Alakuijala i Zoltana Szabadkę, 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ć 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 przez Brotli, serwer przełączy się na Gzip i dostarczy zakodowane zasoby obsługiwane przez przeglądarkę – zakładając, że serwer jest poprawnie skonfigurowany.
Co sprawia, że Brotli jest lepszy?
Według badań przeprowadzonych przez CertSimple:
- Pakiety JavaScript skompresowane za pomocą Brotli są o 14% mniejsze niż pakiety JavaScript skompresowane za pomocą Gzip.
- Pliki HTML skompresowane przez Broti są o 21% mniejsze niż ich odpowiedniki w formacie 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: jak najlepiej wykorzystać Brotli
Pomimo tego, co mogłeś słyszeć, 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 poprawki do 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, statyczne zasoby można wcześniej skompresować gęściej bez poświęcania szybkości, więc domyślne ustawienie „11” jest bardziej odpowiednie dla takich treści.

Instalowanie Brotli na serwerze WWW
Dodanie wsparcia dla Brotli zapewnia znaczne korzyści przy minimalnym wysiłku. W zależności od używanego oprogramowania serwera WWW określi metodę integracji, której będziesz potrzebować do integracji Brotli. Poniżej przedstawiono kilka dostępnych opcji:
- Nginx ma rozszerzenie Brotli oferowane przez Google.
- Apache oferuje dedykowane rozszerzenie Brotli.
- Microsoft IIS nie oferuje żadnego oficjalnego wsparcia Brotli, jednak istnieje moduł społeczności, który dodaje wsparcie.
- Node.js jest podobny do Microsoftu pod tym względem, że nie ma oficjalnego wsparcia, ale istnieje moduł społecznościowy.
Aby zademonstrować przykład szybkiej instalacji, załóżmy, że używasz Nginx. W takim przypadku możesz zainstalować moduł ngx_brotli w następujący sposób:
[php]
cd nginx-1.xx
$ ./configure –add-module=/ścieżka/do/ngx_brotli
$ make && zainstaluj
[/php]
Następnie dodaj następujące elementy do bloku HTTPS (Brotli działa tylko przez HTTPS):
[php]
brotli na;
brotli_static włączone;
brotli_comp_poziom 4;
brotli_types text/plain text/css application/javascript application/json image/svg+xml application/xml+rss;
[/php]
Możesz modyfikować powyższe dyrektywy według własnego uznania.
Na koniec wprowadź następujące polecenie, aby ponownie uruchomić NGINX i zacząć czerpać korzyści:
[php]
sudo systemctl uruchom ponownie nginx
[/php]
Korzystanie z 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żna je skompresować na najwyższym poziomie Brotli (11), a następnie serwer pochodzenia odbierze je na żądanie.
Ten rodzaj konfiguracji działa świetnie z Webpack, ponieważ dostępna jest wtyczka Webpack do automatycznej kompresji 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ć Webpack do generowania skompresowanych zasobów Brotli.
Czy Twój CDN obsługuje Brotli?
Aby w pełni czerpać korzyści z Brotli, potrzebujesz sieci dostarczania treści, która ją obsługuje. Na przykład KeyCDN wprowadził wsparcie Brotli w zeszłym roku dla wszystkich klientów bez dodatkowych kosztów. Dlatego Twoja witryna nie tylko skorzysta na zmniejszonych rozmiarach plików dzięki lepszej kompresji Brotli, ale także zyska na zmniejszonych opóźnieniach dzięki zasobom buforowanym na serwerach brzegowych bliżej odwiedzających.
Ta metoda wymaga, aby serwer pochodzenia obsługiwał Brotli, a rzeczywista kompresja odbywa się po stronie serwera pochodzenia. Ponownie, pomaga to zaoszczędzić czas i uniknąć konieczności stosowania kompresji w locie, która może negatywnie wpłynąć na wydajność.
Gzip vs Brotli: Podsumowanie
Niewielka ilość wysiłku wymagana do dodania Brotli do serwera WWW jest warta znacznych oszczędności rozmiaru plików. Chociaż Brotli może czasami działać wolniej przy najwyższych ustawieniach kompresji, możesz ł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 wolne aplikacje będą szybsze. Ponieważ Brotli kompresuje tylko zasoby tekstowe, musisz zoptymalizować obrazy w inny sposób. Jeśli jeszcze nie przeszedłeś do HTTP/2, może to znacznie wpłynąć na wydajność Twojej aplikacji. Liczy się każda milisekunda, więc każde działanie, które podejmiesz, aby przyspieszyć działanie aplikacji, zwiększa Twoje szanse na zatrzymanie użytkowników.