Kompresja Brotli jest ogólną techniką kompresji przez. Jest porównywalny z obecnie dostępnymi metodami kompresji, ponieważ oferuje 20-26% lepsze wskaźniki kompresji. Niemniej jednak nie jest to dobre, chyba że WebServer wysyła skompresowane zasoby tekstowe z algorytmem Brotli.
W tym artykule dowiemy się, jak działa kompresja na serwerze i dlaczego jest to przydatne? Nauczymy się również instalowanie serwera Nginx i zachęcić nasz serwer do dostarczania plików skompresowanych Brotli.
Tło
Techniki kompresji/algorytmy poprawiają wydajność witryny, zmniejszając rozmiar treści. Stąd skompresowane dane wymagają niskiego obciążenia i przesyłania czasu. Ma jednak cenę. Serwery wykorzystują wiele zasobów obliczeniowych, aby zapewnić lepszy wskaźnik kompresji. Stąd, tym lepiej, im drogi. Dlatego dodaje się wiele wysiłku w celu poprawy formatów kompresji przy jednoczesnym wykorzystaniu minimalnych cykli procesora.
Do tej pory najbardziej potencjalny format kompresji został gzped. Ostatnio GZIP zostaje zastąpiony nowym algorytmem kompresji znanym jako Brotli. Jest to zaawansowany algorytm kompresji złożony z kodowania Huffmana, algorytmu L77 i modelowania kontekstowego. Natomiast GZIP jest zbudowany na algorytmie deflate.
Format kompresji bezstratów, zaprojektowany przez Google, jest ściśle powiązany z formatem sprężania sprężania. Obie metody kompresji używają przesuwanych okien do odwołania. Przesuwane rozmiar okna Brotli waha się od 1 kb do 16 MB. Natomiast GZIP ma stały rozmiar okna 32 kb. Oznacza to, że okno Brotli jest 512 razy większe niż okno deflate, co nie jest istotne, ponieważ pliki tekstowe większe niż 32 kb są rzadko na serwerach internetowych.
Kompatybilność kompresji serwera jest ważna
Za każdym razem, gdy pobieramy plik z przeglądarki, przeglądarka żąda serwera, jaki rodzaj kompresji obsługuje za pośrednictwem nagłówka. Na przykład, jeśli przeglądarka obsługuje gzip I siadać do dekompresji. Doda te opcje w swoim Akceptacja, Nagłówek, ja.mi.,
Accept-Encoding = ”deflate, gzip”
Stąd przeglądarki, które nie obsługują tych formatów, nie uwzględnią ich w nagłówku. Kiedy serwer odpowiada treścią, mówi przeglądarce o formacie kompresji za pośrednictwem nagłówka, Kodowanie treści. Stąd, jeśli obsługuje GZIP, nagłówek wygląda tak:
Content-encoding = ”gzip”
Nagłówki przeglądarek, takie jak Firefox, które obsługują kompresję Brotli i serwer internetowy, który ma zainstalowany moduł Brotli, aby wyglądał tak:
Accept-Encoding = ”deflate, gzip, br”
Content-encoding = ”gzip, br”
Stąd, jeśli przeglądarka wykorzystuje najlepszy format kompresji, a serwer WWW nie, nie jest to dobre, ponieważ serwer WWW nie odsyła plików z preferowanym algorytmem kompresji. Dlatego ważne jest, aby zainstalować moduł kompresyjny dla serwera internetowego.
Instalacja serwera
Przed przejściem do konfiguracji Brotli skonfigurujemy nasz serwer Nginx. Przed tym sudo aktualizacja apt-get Twój dystrybucja Ubuntu i wpisz następujące polecenia w terminalu Bash.
Ubuntu@ubuntu: ~ $ sudo apt-get aktualizacjaAby umożliwić kompresję Brotli w nginx, skompilujemy nasze .więc moduły zgodnie z naszymi szczegółami wersji Nginx. Jak pokazano, wpisanie następującego polecenia wyświetli wersję Nginx:
Ubuntu@ubuntu: ~ $ nginx -vUżyj wget Poleć wraz ze szczegółem wersji Nginx, aby pobrać kod źródłowy ze strony internetowej Nginx.
ubuntu@ubuntu: ~ $ wget https: // nginx.org/pobierz/nginx-1.18.0.smoła.GZUżyjemy tego kodu źródłowego do kompilacji *.więc binaria do kompresji Brotli. Teraz wyodrębnij plik za pomocą następującego polecenia.
Ubuntu@ubuntu: ~ $ tar xzf nginx-1.18.0.smoła.GZKonfiguracja modułu Brotli
Teraz Google wydało moduł Brotli dla Nginx. Zajmujemy moduł z repozytorium Google.
Ubuntu@ubuntu: ~ $ git klon https: // github.com/google/ngx_brotli -rekusyjny.Będziemy płyta CD do Nginx-1.18.0 folder do konfigurowania dynamicznego modułu Brotli.
Ubuntu@ubuntu: ~ $ cd nginx-1.18.0/Uwaga: możesz odbierać następujący błąd podczas konfiguracji
./konfiguruj: błąd: moduł przepisywania HTTP wymaga biblioteki PCRE.W takim przypadku uruchom następujące polecenie, aby zainstalować bibliotekę PCRE
Ubuntu@ubuntu: ~ $ sudo apt-get instaluj libpcre3-dev -yKompilacja modułu
Użyjemy robić polecenie utworzenia moduły folder wewnątrz nginx-1.18.0 Directory.
Ubuntu@ubuntu: ~ $ sudo tworzy modułyUżywamy CP polecenie kopiowania ngx_http_brotli*.Więc pliki z Nginx-1.18.0/OBJS folder do folderu modułów.
Ubuntu@ubuntu: ~ $ cd /nginx-1.18.0/objs/Teraz wymień zawartość plików za pomocą LS Komenda. Zauważysz, że składa się z dwóch różnych plików modułów, i.mi.:
Ubuntu@ubuntu: ~ $ ls ngx_http_brotli*.WięcTeraz użyj swojego ulubionego edytora, aby otworzyć/etc/nginx/nginx.plik CONF, aby dodać moduły obciążenia Brotli, aby rozpocząć konfigurację Brotli, włączając następujące wiersze:
Ubuntu@ubuntu: ~ $ sudo vim/etc/nginx/nginx.confUwzględnimy również ścieżki folderów konfiguracyjnych /etc/nginx/conf.D/*.conf
I /usr/share/nginx/modules/*.conf W powyższym pliku, takim jak:
httpAby dodać konfigurację Brotli, otwórz/etc/nginx/conf.D/Brotli.conf
plik w krzepa Edytor i włącz Brotli, ustawiając następujące dyrektywy konfiguracyjne:
Brotli on;„„Brotli Off | On„Wartość włącza lub wyłącza dynamikę lub w locie kompresja treści.
''Brotli_ statyczny umożliwia serwerze Nginx sprawdzenie, czy pliki wstępnie skompresowane z .rozszerzenia BR istnieją lub nie. Możemy również przekształcić to ustawienie w opcję wyłączony Lub zawsze. zawsze Wartość pozwala serwerowi wysłać zawartość wstępnie skompresowaną bez potwierdzania, czy przeglądarka ją obsługuje, czy nie. Ponieważ Brotli jest wymagający zasobów, ten moduł najlepiej nadaje się do zmniejszenia sytuacji wąskich gardła.
„„Brotli_Comp_Level 6”Dyrektywa ustawia dynamiczny poziom jakości kompresji na 6. Może wynosić od 0 do 11.
Wreszcie, włącz dynamiczną kompresję dla określonych typów MIME, podczas gdy odpowiedzi tekstowe/HTML są zawsze ściśnięte. Domyślna składnia dla tej dyrektywy to Brotli_types [typ mim]. Więcej informacji na temat dyrektywy konfiguracji na GitHub można.
Zapisz zmiany, uruchom ponownie usługę Nginx, wpisując „Usługa sudo restart nginx” I wszystko jest gotowe.
Wniosek
Po zmianach zauważysz oczywiste ulepszenia wskaźników wydajności. Jednak ma niewielką wadę zwiększonego obciążenia procesora w czasie szczytu. Aby uniknąć takich sytuacji, miej oko na wykorzystanie procesora; Jeśli osiągnie 100% regularnie, możemy wykorzystać wiele opcji zgodnie z naszymi preferencjami, takimi jak prezentowanie zawartości wstępnie skompresowanej lub statycznej, obniżenie poziomu kompresji i wyłączanie kompresji w locie, wśród wielu wielu.