Szukasz darmowych sposobów na przyspieszenie działania swojej witryny? Jednym ze sposobów, który każdy właściciel witryny może zastosować za darmo, jest skorzystanie z kompresji. Jeżeli zarówno serwer WWW, jak i przeglądarka, z którą się komunikuje, znają wspólny algorytm kompresji, dane przesyłane przez sieć mogą zostać skompresowane. Skompresowane dane są mniejsze. Mniejsze dane są odbierane szybciej i co za tym idzie strona www również ładuje się odczuwalnie szybciej.
Spis treści
Czym jest kompresja?
Kiedy wpisujesz adres URL do przeglądarki, przeglądarka rozpoczyna rozmowę z serwerem i jedną z informacji jest to, czy może zdekompresować zawartość, a jeśli tak, to jakie “algorytmy” kompresji są obsługiwane.
Serwer nasłuchuje i jeśli kompresja jest włączona, a serwer zna jeden z algorytmów kompresji używanych przez przeglądarkę, skompresuje wszystkie dane i prześle je do przeglądarki w tej formie.
Większość nowoczesnych przeglądarek internetowych obsługuje lub “akceptuje” zawartość zakodowaną w jednym z trzech algorytmów:
- Deflate
- Gzip
- Brotli
Gdy przeglądarka internetowa kontaktuje się z serwerem, wysyła nagłówek o następującej treści:
Accept-Encoding: br, gzip
Informuje on serwer, że przeglądarka obsługuje dane skompresowane w formacie Brotli (br) lub Gzip (gzip). Co ważne, serwery mają możliwość zignorowania tej informacji i zwrócenia nieskompresowanych danych.
Ogólnie rzecz biorąc, dane skompresowane są przesyłane szybciej niż dane nieskompresowane. Dlatego strona dociera do przeglądarki szybciej.
Kompresja dotyczy głównie elementów tekstowych:
- HTML
- JavaScript
- CSS
Stanowią one obecnie dużą część nowoczesnych stron internetowych i mogą być kompresowane przez algorytmy kompresji po stronie serwera.
Z drugiej strony, większość formatów obrazów (jpg, png itp.), większość formatów audio (mp3) i inne nietekstowe pliki binarne są już skompresowane. Ich skompresowanie nie spowoduje żadnej różnicy, więc bez względu na nagłówek Accept-Encoding serwery będą je wysyłać w niezmienionej postaci.
Jak wspomniano wyżej, większość nowoczesnych przeglądarek internetowych akceptuje 3 główne algorytmy kompresji. Większość serwerów używa obecnie jednego lub obu najpopularniejszych z nich – Gzip i Brotli.
Kompresja Gzip
Gzip jest najstarszym i najczęściej używanym algorytmem. Został napisany przez Jeana-loupa Gailly’ego i Marka Adlera. Pierwsza wersja beta została wydana w 1992 roku. Pierwsza właściwa wersja, wersja 1.0, została wydana na początku 1993 roku, czyli w czasie, gdy większość ludzi zaczynała korzystać z Internetu.
Gzip został zaprojektowany jako uniwersalna biblioteka kompresji. Teoria stojąca za Gzipem opierała się na wcześniejszym algorytmie kompresji, DEFLATE.
Ze względu na swoją popularność i fakt, że bardzo dobrze radzi sobie z kompresją małych plików, jest do dziś szeroko stosowany zarówno w różnych systemach operacyjnych, jak i jako podstawowy algorytm kompresji dla serwerów WWW.
Kompresja Brotli
Brotli został opracowany przez pracowników firmy Google, Jyrki Alakuijala i Zoltána Szabadkę, w 2013 roku. Firma Google początkowo szukała lepszego sposobu kompresji plików WOT, czyli czcionek internetowych.
Gzip został pierwotnie zaprojektowany do kompresji plików i został przystosowany do kompresji strumieniowej, aby mógł działać w sieci. Z drugiej strony, Brotli od początku był projektowany z myślą o kompresji strumieni. Dzięki temu jest lepszym wyborem dla serwerów internetowych do kompresji treści przed wysłaniem jej do przeglądarki.
W 2015 roku firma Google opublikowała specyfikację Brotli dla protokołu HTTP. Oprócz określenia sposobu, w jaki przeglądarka powinna powiadamiać serwer, że może dekompresować Brotli, wysyłając nagłówek “Content-Encoding: br“, inżynierowie Google’a wprowadzili do Brotli także inne ulepszenia, które sprawiły, że jeszcze szybciej kompresuje on treści internetowe.
Czym się różnią?
Chociaż oba wywodzą się z algorytmu LZ77, Gzip został zaprojektowany specjalnie do kompresji plików. Biblioteka ta została włączona do wielu różnych programów, które muszą kompresować pliki. Biblioteka ta została włączona do serwerów WWW, gdy kompresowanie zawartości stało się normą. Był to jeden z dwóch algorytmów kompresji określonych w RFC 2616, specyfikacji protokołu HTTPS 1.1, i chociaż nie został zaprojektowany specjalnie do operacji strumieniowych, takich jak serwery WWW, został do nich przystosowany.
Brotli, z drugiej strony, został zaprojektowany specjalnie dla World Wide Web. Firma Google dostrzegła potrzebę bardziej wydajnej kompresji strumieni, dlatego opracowała algorytm Brotli.
Oba algorytmy dobrze spełniają zadania, do których zostały zaprojektowane. Gzip jest nadal używany w Internecie, ponieważ jest lepszy niż nic. Jednak wraz ze wzrostem popularności Brotli coraz więcej serwerów WWW preferuje Brotli od Gzipa. Wiele serwerów, mając możliwość wyboru między tymi dwiema metodami, wybiera Brotli jako metodę domyślną.
Benchmark
Gdy porównano Brotli z Gzip, okazało się, że Brotli lepiej kompresuje pliki:
- 14% mniejsze pliki JavaScript
- 21% mniejsze pliki HTML
- 17% mniejsze pliki CSS
Ponieważ Brotli został zaprojektowany do kompresji strumieni “w locie”, jest szybszy zarówno w kompresji treści na serwerze, jak i dekompresji w przeglądarce niż jego starszy brat Gzip. W niektórych przypadkach ogólna dekompresja front-end jest nawet o 64% szybsza niż Gzip.