Jak włączyć kompresję GZIP, aby przyspieszyć witryny WordPress?
Opublikowany: 2020-10-16Najłatwiejszym sposobem na przyspieszenie witryny WordPress jest wyeliminowanie wszystkich niechcianych zasobów. Drugim najłatwiejszym sposobem na przyspieszenie jest skompresowanie wszystkich potrzebnych zasobów. Włączenie kompresji GZIP na serwerze WWW jest jednym z najprostszych i najskuteczniejszych sposobów osiągnięcia tego celu.
Wszystkie nowoczesne przeglądarki domyślnie obsługują kompresję GZIP. Aby jednak bez przeszkód udostępnić użytkownikom skompresowane zasoby, należy odpowiednio skonfigurować serwer.
W tym poście dowiesz się podstaw kompresji danych w sieci, czym jest kompresja GZIP, jej różnych zalet i jak możesz jej użyć do przyspieszenia witryn WordPress na różnych konfiguracjach serwera.
Podekscytowany? Zróbmy dekompresję!
Wolisz obejrzeć wersję wideo?
Podstawy kompresji danych w sieci
Kompresja danych w sieci to proces zmniejszania rozmiaru danych przesyłanych przez strony internetowe. W zależności od typu danych — tekst, obrazy, arkusze stylów, skrypty, czcionki — istnieją różne sposoby kompresji danych.

Na przykład minifikacja HTML, CSS i JavaScript to prosty sposób na zmniejszenie ilości danych przesyłanych przez przeglądarki. W tym przypadku minifikator kompresuje tekst, usuwając z kodu źródłowego niepotrzebne znaki, takie jak komentarze i spacje.
W poniższym przykładzie prostego dokumentu HTML występują trzy typy zawartości: znaczniki HTML, style CSS i kod JavaScript.
Każdy typ treści ma unikalną składnię i semantykę. Ogólnie ten dokument HTML ma łącznie 357 znaków.
< html > < head > < style > /* kinsta-banner is used on the homepage only */ .kinsta-banner { font-size: 150% } .kinsta-banner { width: 75% } </ style > </ head > < body > <!-- kinsta banner START --> < div >...</ div > <!-- kinsta banner END --> < script > kinstaScripts(); // random scripts used on the page </ script > </ body > </ html >
Powyższy kod jest łatwy do odczytania i naśladowania. Jest idealny do rozwoju. Jednak przeglądarka nie musi czytać komentarzy i mieć idealnie wcięte tagi. Inteligentny kompresor może przeanalizować ten dokument i usunąć z niego wszystkie niepotrzebne fragmenty.
< html >< head >< style >.kinsta-banner{font-size:150%;width:75%}</ style ></ head >< body >< div >...</ div >< script >kinstaScripts();</ script ></ body ></ html >
Po minifikacji dokument HTML zmniejsza się do zaledwie 141 znaków. To 60,50% oszczędności w liczbie znaków. Nie jest to tak łatwe dla oczu, ale nie ma to znaczenia dla przeglądarki. Nadal będzie wyświetlać użytkownikowi tę samą stronę.
Aby skorzystać z obu wersji, możesz zachować oryginalny dokument jako „wersję rozwojową”, ale zminimalizować cały kod przed opublikowaniem go.
Większość wtyczek wydajnościowych WordPress zajmuje się tym automatycznie.

Na przykład nieskompresowana wersja biblioteki jQuery 3.5.1 jest ponad 3 razy większa niż zminifikowana wersja tego samego pliku.
Podobnie te same techniki kompresji opisane powyżej mogą zoptymalizować inne typy treści, takie jak obrazy, filmy, czcionki i nie tylko. Takie redukcje związane z treścią to pierwszy krok w optymalizacji rozmiaru zasobów tekstowych w witrynie.
Ale kompresja danych to coś więcej niż tylko minifikacja. Wykorzystując zaawansowane techniki matematyczne, algorytmy kompresji danych mogą jeszcze bardziej zmniejszyć rozmiar danych.
Jednym z najpopularniejszych przykładów takiej metody kompresji danych jest GZIP . Umożliwia wydajną transmisję danych i znacząco przyczynił się do uczynienia z Internetu realnego, globalnego medium komunikacyjnego.
Co to jest kompresja GZIP?
GZIP, skrót od GNU Zip , to najpopularniejsza bezstratna metoda kompresji danych w sieci. Pozwala zmniejszyć rozmiar stron HTML, arkuszy stylów i skryptów witryny.
Oprócz tego, że jest algorytmem kompresji danych, GZIP jest także rozszerzeniem pliku ( .gz ) i oprogramowaniem służącym do kompresji/dekompresji plików.
Opiera się na algorytmie DEFLATE, który jest mieszanką kodowania LZ77 i algorytmów kodowania Huffmana.

Kompresor GZIP pobiera zestaw surowych danych i kompresuje je bezstratnie. Surowe dane mogą pochodzić z dowolnego typu pliku, ale GZIP najlepiej działa z zasobami tekstowymi (np. HTML, CSS, JS).
W następnej sekcji szczegółowo opisano, jak działa kompresja GZIP.
Jak GZIP kompresuje dane

Na początek kompresor GZIP uruchamia algorytm kompresji LZ77 na surowych danych w celu usunięcia nadmiarowości. Algorytm ten działa poprzez znajdowanie powtarzających się wzorców we wstępnie zdefiniowanym oknie przesuwnym (mała część surowych danych).
Następnie zastępuje wszystkie powtarzające się ciągi krotkami, aby skompresować surowe dane.

W powyższym przykładzie rozmiar przesuwanego okna ma tylko 13 znaków (13 bajtów). Jednak kompresja GZIP może używać maksymalnego rozmiaru okna przesuwnego 32 KB (32 768 bajtów). Rozmiar okna przesuwnego odgrywa kluczową rolę w wydajności kompresji LZ77.
Po skompresowaniu surowych danych algorytmem LZ77, kompresor GZIP wykorzystuje algorytm kodowania Huffmana do dalszej kompresji. Robi to, przypisując znaki występujące częściej, najmniejszą liczbę bitów, przypisując rzadkim znakom największą liczbę bitów.
Ta technika jest podobna do tej stosowanej w kodzie Morse'a, w którym litery występujące częściej w języku angielskim mają najkrótsze sekwencje.
Aby zrozumieć, jak działa algorytm kodowania Huffmana, rozważ słowo BOOKKEEPER
. Ma 10 znaków, ale ma tylko 6 unikalnych znaków. To słowo zawiera dobrą mieszankę pojedynczych, podwójnych i potrójnych liter.
Prawie wszystkie strony internetowe używają kodowania znaków UTF-8 do reprezentowania liter i symboli. Każdy znak ASCII w UTF-8, który obejmuje również alfabet angielski, wykorzystuje 1 bajt (8 bitów).

Łańcuch składający się z 10 znaków, taki jak BOOKKEEPER
, będzie wymagał 10 bajtów (80 bitów) pamięci. Widać, że zawiera 1 wystąpienie liter B , P , R
, 2 wystąpienia liter O
i K
oraz 3 wystąpienia litery E
Algorytm kodowania Huffmana wykorzystuje tę wiedzę do bezstratnej kompresji łańcucha. Robi to, generując drzewo binarne z każdą unikalną literą jako liściem.
Litery o najniższej częstotliwości (np. B , P , R ) znajdą się na dole drzewa, natomiast te, które pojawiają się często (np. E , O , K ) idealnie znajdą się na górze.
Najwyższym węzłem w drzewie jest root , a jego wartość jest równa całkowitej liczbie znaków w ciągu.

Po wygenerowaniu drzewa Huffmana, wszystkie strzałki w lewo i w prawo otrzymują odpowiednio 0 i 1 . Następnie możesz wygenerować kod Huffmana dla dowolnego znaku, śledząc ścieżkę od korzenia do liścia i łącząc wszystkie 0 i 1 s.

Możesz zauważyć, że litery o najwyższej częstotliwości mają kody Huffmana o najmniejszych rozmiarach bitów.
Uwaga: Algorytm kodowania Huffmana może generować alternatywne kody binarne przy użyciu innej strategii porządkowania znaków o tych samych częstotliwościach. Jednak całkowity rozmiar zakodowanego ciągu pozostanie taki sam.

To 68,75% zmniejszenie pamięci wymaganej do przechowywania oryginalnego słowa.
Użycie drzewa Huffmana z konwencją 0/1 generuje kody binarne, które spełniają właściwość prefiksu. Zapewnia to, że kod Huffmana określonego znaku nie jest prefiksem kodu innego znaku, co ułatwia dekodowanie zakodowanego ciągu za pomocą drzewa Huffmana. Odgrywa to główną rolę w szybkości dekompresji GZIP.
Podobnie jak w przypadku powyższego słowa, kompresor GZIP wykorzystuje algorytm kodowania Huffmana do dalszej optymalizacji krotek generowanych przez algorytm LZ77. Powoduje to wysoce skompresowane pliki z rozszerzeniem .gz.
Jeśli chcesz dowiedzieć się więcej o tym, jak działa GZIP, obejrzyj ten film, aby zapoznać się z krótkim omówieniem.
Jak dobra jest kompresja GZIP?
Zazwyczaj GZIP osiąga współczynnik kompresji około 70% dla małych plików, ale może osiągnąć nawet 90% dla większych zasobów tekstowych.

W powyższej tabeli widać, że skompresowanie zminifikowanych plików za pomocą GZIP może jeszcze bardziej zmniejszyć ich rozmiar.
Uwaga: możesz skompresować dowolny typ pliku za pomocą GZIP, ale w przypadku zasobów już skompresowanych innymi metodami (np. obrazów, filmów) nie przyniesie to żadnych oszczędności. Czasami może nawet zwiększyć rozmiar pliku.
Siła algorytmu kompresji zależy nie tylko od jego współczynnika kompresji, ale także od tego, jak szybko i wydajnie może kompresować i dekompresować dane. Właśnie tam GZIP przoduje w większości przypadków użycia.
Ponieważ GZIP szybko dekompresuje się za pomocą algorytmu przesyłania strumieniowego, doskonale nadaje się do protokołów internetowych, w których liczy się szybkość. Ponadto GZIP zużywa minimalne zasoby zarówno do kompresji, jak i dekompresji danych, co czyni go idealnym zarówno dla serwerów, jak i klientów.

Powyższe wykresy porównują wydajność kompresji algorytmów kompresji brotli , bzip2 , gzip i xz . GZIP przegrywa w teście współczynnika kompresji z niewielkim marginesem, ale pod względem prędkości kompresji i dekompresji zdecydowanie pokonuje konkurencję.
Patrząc na wykres szybkości kompresji, możemy stwierdzić, że GZIP jest idealny do kompresji w czasie rzeczywistym na serwerach HTTP i innych strumieniach danych w sieci. Biorąc pod uwagę wszystkie jego pozytywy w rozwoju sieci, IETF ratyfikował GZIP jako jeden z trzech standardowych formatów kompresji w HTTP/1.1.
Uwaga: Abstrakcja biblioteki kompresji GZIP o nazwie zlib jest używana w wielu popularnych systemach operacyjnych (Linux, macOS, iOS) i nowoczesnych konsolach do gier (PlayStation 4, Wii U, Xbox One). Jest również używany w bezstratnym formacie PNG do kompresji obrazów.
6 zalet kompresji GZIP
Przyjrzyjmy się bliżej najważniejszym zaletom kompresji GZIP.
Zapewnia przyzwoity współczynnik kompresji
Jak wspomniano wcześniej, GZIP nie ma najlepszego współczynnika kompresji w porównaniu z konkurencją. Ale to też nie jest tak daleko od nich. Zazwyczaj może pomóc zmniejszyć rozmiar zasobów tekstowych o 70-90%.
Super szybka kompresja i dekompresja
Jeśli chodzi o prędkość kompresji i dekompresji danych, GZIP jest wyraźnym zwycięzcą. Jest to wysoce pożądane w przypadku kompresji w locie w serwerach HTTP i innych strumieniach danych.
Wymaga bardzo małej pamięci
GZIP pozostawia minimalny ślad pamięci, dzięki czemu nadaje się do serwerów i systemów o ograniczonej pojemności pamięci. Dlatego znajdziesz go obsługiwany nawet przez najtańszych dostawców usług hostingowych.
Nie rozrasta się nawet w najgorszych przypadkach
Algorytmy bezstratnej kompresji danych, takie jak GZIP, mają ścisły limit, poza którym nie mogą kompresować danych.
Zwykle dzieje się tak, gdy zasób jest już dobrze skompresowany lub jeśli jest mały, a obciążenie związane z dodaniem słownika GZIP jest wyższe niż oszczędności wynikające z kompresji. Możemy przypisać to zjawisko koncepcji zwanej kodowaniem entropijnym. GZIP jest wysoce odporny na ten efekt.
Darmowy w użyciu i open source
GZIP został stworzony głównie jako darmowy, otwarty zamiennik dla opatentowanego programu do kompresji używanego we wczesnych systemach Unix. Dzięki temu nie jest obciążony żadnymi patentami i może być swobodnie używany przez każdego.
Cieszy się uniwersalnym wsparciem
Według W3Techs kompresja GZIP jest używana przez 82% wszystkich śledzonych przez nich witryn, co czyni ją najczęściej używanym algorytmem kompresji w sieci.
GZIP jest obsługiwany przez prawie wszystkie serwery i klientów. Bez względu na to, na jakim serwerze hostujesz swoją witrynę, możesz ją przyspieszyć, włączając na niej GZIP.
Ostrzeżenia GZIP w narzędziach do testowania szybkości witryny
Oprócz minifikacji, włączenie GZIP jest jedną z najprostszych i najskuteczniejszych optymalizacji szybkości, które możesz wdrożyć na swojej stronie.
To także jeden z najłatwiejszych sposobów optymalizacji WordPressa. Mimo to wiele witryn WordPress nadal z niego nie korzysta.
Gdy odwiedzasz witrynę, Twoja przeglądarka sprawdza, czy serwer sieciowy ma włączony GZIP, sprawdzając nagłówek odpowiedzi content-encoding: gzip
. Jeśli nagłówek istnieje, pobiera skompresowane pliki, dekompresuje je, a następnie automatycznie wyświetla mniejsze pliki.

Jeśli przeglądarka nie wykryje nagłówka odpowiedzi GZIP, pobiera nieskompresowane pliki. W większości przypadków różnica w szybkości ładowania strony może wynosić kilka sekund. Dlatego jeśli nie masz włączonego GZIP, zobaczysz ostrzeżenia w narzędziach do testowania szybkości witryny.
Ostrzeżenie GZIP w Google PageSpeed Insights / Lighthouse
Google PageSpeed Insights wyświetla ostrzeżenie, gdy nie masz włączonej kompresji tekstu w Twojej witrynie.
Uwaga: Google PageSpeed Insights i Google Lighthouse były dwoma oddzielnymi narzędziami do testowania wydajności witryny. Pracowali niezależnie od siebie do 2018 roku, kiedy Google zaktualizowało PageSpeed Insights, aby używać Lighthouse jako silnika analitycznego. Dlatego PageSpeed Insights i Lighthouse są teraz jednym i tym samym.

W przykładowej witrynie powyżej kompresja zasobów tekstowych może zmniejszyć wagę strony o ponad 78% i przyspieszyć ładowanie strony o 2,1 sekundy .
Uwaga: PageSpeed Insights opiera się na nagłówkach odpowiedzi zwracanych do przeglądarki przez serwer. Czasami może wyświetlać fałszywe ostrzeżenie, nawet jeśli masz włączoną kompresję GZIP. Może to być spowodowane uruchomieniem testu szybkości na komputerze, który korzysta z pośredniego serwera proxy lub oprogramowania zabezpieczającego. Mogą zakłócać pobieranie skompresowanych plików z serwerów zewnętrznych.
Ostrzeżenie GZIP w GTmetrix
GTmetrix wyświetla ostrzeżenie, jeśli Twoja witryna nie obsługuje skompresowanych zasobów tekstowych. Podobnie jak Google PageSpeed Insights, pokaże Ci również potencjalne oszczędności, jakie możesz osiągnąć.

Uwaga: GTmetrix aktualizuje swój algorytm testu prędkości, aby zastąpić stare biblioteki PageSpeed Insights i YSlow najnowszymi danymi Google Lighthouse. Możesz oczekiwać, że ostrzeżenie o kompresji GZIP będzie podobne do tego, które pokazuje Lighthouse.
Ostrzeżenie GZIP w narzędziach Pingdom
Pingdom Tools wyświetla proste ostrzeżenie, aby skompresować komponenty witryny za pomocą GZIP.

W sekcji opisu narzędzia Pingdom zawierają również kilka statystyk dotyczących znaczenia GZIP. Fajna fasola!

Ostrzeżenie GZIP w WebPageTest
WebPageTest wyświetla ostrzeżenie na karcie Przegląd wydajności , jeśli wykryje, że wszelkie kompresowalne odpowiedzi nie są obsługiwane w najbardziej zoptymalizowany sposób.

WebPageTest poda również ocenę punktową, aby pokazać, jak poważne jest ostrzeżenie. Na przykład ocenia powyższe ostrzeżenie 23 na 100, co oznacza, że należy to naprawić jako priorytet.
Jak sprawdzić, czy kompresja GZIP jest włączona?
Nagłówek HTTP Accept-Encoding: gzip, deflate
jest obsługiwany przez wszystkie nowoczesne przeglądarki. Dlatego większość hostów internetowych, w tym Kinsta, domyślnie włącza kompresję GZIP na wszystkich swoich serwerach.
Gdy serwery WWW widzą ten nagłówek wysłany przez przeglądarkę, rozpoznają obsługę GZIP przez przeglądarkę i odpowiadają skompresowaną odpowiedzią HTTP przy użyciu nagłówka content-encoding: gzip
.
Ale jeśli korzystasz z innego dostawcy hostingu WordPress lub chcesz tylko sprawdzić, czy Twoja witryna prawidłowo obsługuje skompresowaną zawartość GZIP, zawsze sprawdź, czy jest włączona.
Poniżej znajduje się kilka prostych sposobów sprawdzenia kompresji GZIP.
1. Narzędzia do testowania kompresji online GZIP
Korzystanie z narzędzia online to najprostszy sposób sprawdzenia, czy kompresja GZIP jest włączona w Twojej witrynie. Polecam skorzystać z darmowych narzędzi Check GZIP Compression lub HTTP Compression Test. Po prostu wprowadź adres URL swojej witryny i naciśnij przycisk Sprawdź lub Przetestuj .
Oba te narzędzia online pokażą Ci krótki raport na temat tego, czy GZIP jest włączony, a także ilość transferu danych, który zapisałeś (lub możesz zaoszczędzić), udostępniając testowy adres URL z włączoną kompresją GZIP.
Pierwsze narzędzie pokaże również inne istotne informacje, takie jak typ serwera witryny, typ treści i czas kompresji.


Należy pamiętać, że optymalizacja GZIP nie kończy się tylko na Twojej stronie internetowej, ale obejmuje także statyczne zasoby tekstowe, takie jak arkusze stylów, skrypty i czcionki. Jeśli używasz CDN do obsługi tych zasobów, musisz upewnić się, że CDN obsługuje je również z włączoną kompresją GZIP.
Większość nowoczesnych sieci CDN, takich jak Cloudflare, Kinsta CDN, KeyCDN i CloudFront, obsługuje kompresję GZIP. Możesz przetestować zasoby obsługiwane przez CDN pod kątem kompresji GZIP, łącząc się bezpośrednio z zasobami.

W powyższym raporcie widać, że Kinsta CDN korzysta z silnika KeyCDN, który jest tradycyjnym pull CDN. Jeśli używasz Kinsta do hostowania swojej witryny WordPress, nie musisz się martwić kompresją GZIP, ponieważ jest ona domyślnie włączona.
2. Nagłówek odpowiedzi HTTP „content-encoding: gzip”
Drugim sposobem sprawdzenia, czy witryna dostarcza skompresowaną zawartość GZIP, jest weryfikacja nagłówka odpowiedzi HTTP content-encoding: gzip
.
Masz dość słabej obsługi hostingu WordPress na poziomie 1 bez odpowiedzi? Wypróbuj nasz światowej klasy zespół wsparcia! Sprawdź nasze plany
Możesz otworzyć Chrome DevTools lub Firefox Developer Tools i poszukać tego nagłówka odpowiedzi w sekcji Sieć .
Jak to wygląda w Chrome DevTools już wcześniej pokazałem. Oto jak to wygląda w Narzędziach dla programistów Firefoksa.

Możesz także włączyć opcję „Użyj dużych wierszy żądań” w panelu ustawień Chrome DevTools, aby zobaczyć zarówno oryginalny, jak i skompresowany rozmiar strony. Jak widać poniżej, rozmiar oryginalnej strony zmniejszył się ze 118 KB do zaledwie 22,9 KB po skompresowaniu za pomocą GZIP.

3. Narzędzia do testowania szybkości stron internetowych
Większość narzędzi do testowania szybkości witryny ostrzega, że nie używasz kompresji, takiej jak GZIP, do obsługi stron internetowych. Wielu czytelników przybywających do tego artykułu prawdopodobnie przychodzi z powodu dokładnie tych ostrzeżeń GZIP, z których wiele już szczegółowo omówiłem powyżej.

Możesz użyć narzędzi takich jak PageSPeed Insights, GTmetrix, Pingdom Tools i WebPageTest, aby sprawdzić, czy masz włączoną kompresję GZIP w swojej witrynie WordPress.
Jak włączyć kompresję GZIP
Jeśli nie masz włączonej kompresji GZIP na swoim serwerze internetowym, istnieje wiele sposobów na jej włączenie. Dokładna metoda zależy od serwera WWW, którego używasz do hostowania swojej witryny.
Ważne: Jak zawsze, przed edycją wykonaj kopię zapasową plików konfiguracyjnych witryny i serwera.
Włącz GZIP z wtyczką WordPress
Najłatwiejszym sposobem włączenia kompresji GZIP w witrynie WordPress jest użycie wtyczki do buforowania lub optymalizacji wydajności.
Na przykład, jeśli hostujesz swoją witrynę WordPress na serwerze Apache, W3 Total Cache zawiera opcję włączenia kompresji GZIP w panelu ustawień pamięci podręcznej przeglądarki .
Podobnie WP Rocket pozwala automatycznie dodawać reguły kompresji GZIP. Te wtyczki umożliwiają kompresję GZIP poprzez dodanie modułu mod_deflate
Apache do pliku .htaccess.

Wtyczki WordPress wymagają uprawnień do modyfikowania plików na twoim serwerze internetowym. Jeśli nie mają odpowiednich uprawnień, nie powiedzie się lub pokaże błąd.
W takich przypadkach należy skontaktować się z dostawcą usług hostingowych lub ręcznie zmodyfikować pliki konfiguracyjne serwera WWW, korzystając z poniższych fragmentów kodu.
Uwaga: Kinsta zoptymalizowała swoją platformę pod kątem wysokiej wydajności, niezawodności i bezpieczeństwa. Obejmuje to również domyślne włączenie kompresji GZIP dla wszystkich planów hostingowych.
Ponieważ wtyczki pamięci podręcznej innych firm mogą powodować konflikt z wewnętrznymi optymalizacjami wydajności Kinsta, Kinsta nie zezwala na większość z nich na swoich serwerach. Aby uzyskać więcej informacji, możesz zobaczyć pełną listę zabronionych wtyczek Kinsta.
Włącz GZIP na serwerze Apache Web Server
Według Netcraft Apache obsługuje więcej aktywnych witryn niż jakikolwiek inny używany obecnie serwer WWW. Jest to również jeden z dwóch polecanych przez WordPressa serwerów WWW.
Aby włączyć kompresję GZIP na serwerach Apache, musisz użyć jego modułów mod_filter
i mod_deflate
i odpowiednio je skonfigurować za pomocą odpowiednich dyrektyw. Polecą one Apache skompresowanie danych wyjściowych serwera przed wysłaniem ich do klientów przez sieć.
Masz dwie opcje edycji konfiguracji serwera Apache na podstawie posiadanego poziomu dostępu:
- Jeśli możesz uzyskać dostęp do głównego pliku konfiguracyjnego serwera (zwykle nazywanego httpd.conf ), zaleca się użycie go do skonfigurowania Apache, ponieważ pliki .htaccess mogą spowolnić Apache.
- Jeśli nie możesz uzyskać dostępu do głównego pliku konfiguracyjnego serwera, co zwykle ma miejsce w przypadku większości dostawców hostingu współdzielonego WordPress, musisz skonfigurować Apache za pomocą pliku .htaccess .
Pierwsza opcja jest przeznaczona wyłącznie dla administratorów, ponieważ dostawcy hostingu rzadko pozwalają na edycję głównego pliku konfiguracyjnego serwera. Wyjaśnienie, jak to zrobić w ten sposób, wykracza poza zakres tego artykułu. Aby rozpocząć, możesz zapoznać się z przykładowymi konfiguracjami serwera Apache udostępnianymi przez projekt HTML5 Boilerplate oraz z dokumentacją Apache.
Druga opcja jest idealna dla większości właścicieli witryn WordPress, ponieważ wielu dostawców hostingu współdzielonego umożliwia edycję plików .htaccess .
Aby rozpocząć, użyj protokołu SFTP lub menedżera plików online hosta, aby znaleźć plik .htaccess w katalogu głównym witryny WordPress. Następnie dodaj do niego poniższy fragment kodu.
Ważne: Upewnij się, że moduł mod_filter
jest aktywny na twoim serwerze. Większość hostów internetowych ma to domyślnie włączone, ale jeśli nie jest, dyrektywa AddOutputFilterByType
nie zadziała i może zgłosić błąd HTTP 500. Możesz sprawdzić dzienniki błędów serwera, jeśli masz jakiekolwiek problemy po dodaniu poniższego fragmentu kodu.
<IfModule mod_deflate.c> # Compress HTML, CSS, JavaScript, Text, XML and fonts AddOutputFilterByType DEFLATE application/javascript AddOutputFilterByType DEFLATE application/rss+xml AddOutputFilterByType DEFLATE application/vnd.ms-fontobject AddOutputFilterByType DEFLATE application/x-font AddOutputFilterByType DEFLATE application/x-font-opentype AddOutputFilterByType DEFLATE application/x-font-otf AddOutputFilterByType DEFLATE application/x-font-truetype AddOutputFilterByType DEFLATE application/x-font-ttf AddOutputFilterByType DEFLATE application/x-javascript AddOutputFilterByType DEFLATE application/xhtml+xml AddOutputFilterByType DEFLATE application/xml AddOutputFilterByType DEFLATE font/opentype AddOutputFilterByType DEFLATE font/otf AddOutputFilterByType DEFLATE font/ttf AddOutputFilterByType DEFLATE image/svg+xml AddOutputFilterByType DEFLATE image/x-icon AddOutputFilterByType DEFLATE text/css AddOutputFilterByType DEFLATE text/html AddOutputFilterByType DEFLATE text/javascript AddOutputFilterByType DEFLATE text/plain AddOutputFilterByType DEFLATE text/xml # Remove browser bugs (only needed for ancient browsers) BrowserMatch ^Mozilla/4 gzip-only-text/html BrowserMatch ^Mozilla/4\.0[678] no-gzip BrowserMatch \bMSIE !no-gzip !gzip-only-text/html Header append Vary User-Agent </IfModule>
Dodaj powyższy kod dopiero po istniejących dyrektywach pliku .htaccess . Zapisz plik, a następnie sprawdź, czy umożliwia kompresję GZIP na Twoim serwerze.

Twój serwer internetowy powinien teraz obsługiwać skompresowane pliki dla wszystkich wymienionych powyżej rozszerzeń plików. Możesz to potwierdzić, korzystając z dowolnej z wcześniej wymienionych metod.
Jeśli chcesz mieć pewność, że serwery proxy i oprogramowanie zabezpieczające po stronie klienta nie kolidują z kompresją GZIP, możesz zastąpić powyższy fragment kodu poniższym.
<IfModule mod_deflate.c> # force compression for clients that mangle 'Accept-Encoding' request headers <IfModule mod_setenvif.c> <IfModule mod_headers.c> SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding </IfModule> </IfModule> # compress all output with one of the following file extensions <IfModule mod_filter.c> AddOutputFilterByType DEFLATE "application/atom+xml" \ "application/javascript" \ "application/json" \ "application/ld+json" \ "application/manifest+json" \ "application/rdf+xml" \ "application/rss+xml" \ "application/schema+json" \ "application/geo+json" \ "application/vnd.ms-fontobject" \ "application/wasm" \ "application/x-font-ttf" \ "application/x-javascript" \ "application/x-web-app-manifest+json" \ "application/xhtml+xml" \ "application/xml" \ "font/eot" \ "font/opentype" \ "font/otf" \ "font/ttf" \ "image/bmp" \ "image/svg+xml" \ "image/vnd.microsoft.icon" \ "text/cache-manifest" \ "text/calendar" \ "text/css" \ "text/html" \ "text/javascript" \ "text/plain" \ "text/markdown" \ "text/vcard" \ "text/vnd.rim.location.xloc" \ "text/vtt" \ "text/x-component" \ "text/x-cross-domain-policy" \ "text/xml" </IfModule> # define and map media types to their appropriate encoding type # Using SVG format (Scalable Vector Graphics) is highly recommended to # load logos, icons, text, and simple images. You can compress .SVG files # further using GZIP to create .SVGZ files. However, most browsers don't # know that they need to decompress them first if they're not served # without an appropriate 'content-encoding' HTTP response header. Thus, # these images wouldn't show up in the browser. Hence, this module. <IfModule mod_mime.c> AddType image/svg+xml svg svgz AddEncoding gzip svgz </IfModule> </IfModule>
Możesz dowiedzieć się więcej o wszystkich użytych tutaj dyrektywach, przechodząc do repozytorium kodu i podążając za wszystkimi zawartymi tam zasobami.
Włącz GZIP na serwerze WWW Nginx
Zgodnie z Netcraft, Nginx jest najczęściej używanym serwerem internetowym przez komputery z dostępem do Internetu. Jeśli obecny trend się utrzyma, wkrótce wyprzedzi Apache i stanie się najczęściej używanym serwerem internetowym przez aktywne witryny. Nawet Kinsta używa Nginx do zasilania swoich zoptymalizowanych pod kątem wydajności rozwiązań hostingowych dla WordPress.
Możesz włączyć kompresję GZIP na serwerze sieciowym Nginx, używając dyrektyw zdefiniowanych w ngx_http_gzip_module.
Aby rozpocząć, dodaj poniższe dyrektywy do swojego pliku nginx.conf . Zazwyczaj plik ten można znaleźć w lokalizacji /etc/nginx/nginx.conf
serwera.
# enables GZIP compression gzip on; # compression level (1-9) # 6 is a good compromise between CPU usage and file size gzip_comp_level 6; # minimum file size limit in bytes to avoid negative compression outcomes gzip_min_length 256; # compress data for clients connecting via proxies gzip_proxied any; # directs proxies to cache both the regular and GZIP versions of an asset gzip_vary on; # disables GZIP compression for ancient browsers that don't support it gzip_disable "msie6"; # compress outputs labeled with the following file extensions or MIME-types # text/html MIME-type is enabled by default and need not be included gzip_types application/atom+xml application/geo+json application/javascript application/x-javascript application/json application/ld+json application/manifest+json application/rdf+xml application/rss+xml application/vnd.ms-fontobject application/wasm application/x-web-app-manifest+json application/xhtml+xml application/xml font/eot font/otf font/ttf image/bmp image/svg+xml text/cache-manifest text/calendar text/css text/javascript text/markdown text/plain text/xml text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
Jeśli Twoja witryna obsługuje duże pliki JS i CSS, możesz zwiększyć rozmiar bufora używanego do kompresji, dodając następującą dyrektywę do pliku nginx.conf :
# sets the 'number' and 'size' of buffers for GZIP compression # default buffer size is 4K or 8K depending on the platform gzip_buffers 16 8k;
Nie zapomnij ponownie załadować Nginx po zapisaniu pliku nginx.conf .
sudo service nginx reload
Na koniec powinieneś sprawdzić, czy twój serwer ma włączoną kompresję GZIP. Możesz zapoznać się z dokumentacją Nginx, aby uzyskać aktualną listę wszystkich dyrektyw ngx_http_gzip_module
.
Włącz GZIP na serwerze internetowym IIS
Internetowe usługi informacyjne (IIS) firmy Microsoft to trzeci najpopularniejszy obecnie używany serwer sieci Web. Usługi IIS są wdrażane głównie w środowiskach korporacyjnych działających w systemie Windows, zwłaszcza do konfigurowania serwerów intranetowych i ekstranetowych dla firm.
Jest rzadko używany do hostowania witryn WordPress ze względu na różne problemy ze zgodnością.
Jeśli jednak znajdziesz się w jednej z tych rzadkich sytuacji, w których musisz włączyć kompresję GZIP w usługach IIS, możesz zapoznać się z dokumentacją firmy Microsoft, aby rozpocząć. Pomocny może być również ten wątek Stack Overflow.
Alternatywy dla kompresji GZIP
Świat kompresji danych w sieci ciągle się rozwija. Ponieważ średni rozmiar strony stale rośnie, technologia sieciowa również próbuje go dogonić, aby przesyłanie danych przez Internet było bardziej wydajne.

W ciągu ostatnich kilku lat powszechną popularność zyskał nowy algorytm kompresji: Brotli. Kompresja czcionek internetowych WOFF2 była pierwotnie głównym celem Brotli, ale od tego czasu została rozszerzona o obsługę kompresji dla dowolnego typu danych.
Brotli kompresuje dane lepiej niż GZIP, ale ich skompresowanie wymaga znacznie więcej czasu i zasobów. Jednak jego czas dekompresji jest porównywalny do czasu GZIP, choć wciąż jest odrobinę wolniejszy.

Większość przeglądarek obsługuje dziś Brotli, ale korzystanie z niego w witrynach WordPress jest nadal dość skomplikowane. Musisz hostować swoją witrynę u dostawcy hostingu, który obsługuje Brotli lub umożliwia zainstalowanie biblioteki Brotli. Większość zarządzanych hostów WordPress nie obsługuje jeszcze tego wprost, ale jeśli używasz CDN, takiego jak Cloudflare lub KeyCDN, możesz go łatwo włączyć.
Brotli jest bardzo obiecujący w zakresie kompresji aktywów statycznych. Akamai opublikował szczegółowy artykuł porównujący Brotli i GZIP. You can check it out to learn more about Brotli.
Streszczenie
A well-optimized web is great for everyone. Users love snappier websites, website owners love the reduced hosting charges, and web hosts love the optimization achieved on their servers. Compression techniques like GZIP are one of the best ways to speed up page load times for your visitors.
WordPress site owners can speed up their sites instantly by enabling GZIP compression. Kinsta enables it by default on all its servers, but for others, this article covers multiple ways to enable GZIP compression on various web servers.
Speed is critical for any website. Just compress!