Skip to main content

Przyspieszamy stronę internetową – kompresja gzip

Jak ważna jest optymalizacja strony internetowej (WSO – Web Site Optimalization) nie trzeba chyba nikomu wyjaśniać.
W Internecie można znaleźć dziesiątki przykładów (większość jest kopią kopii), jak skompresować zawartość witryny, skryptów i arkuszy styli.
Co nowego wnosi więc ten post? Wyjaśniam w punktach.

  1. Autor tego posta korzysta z serwera produkcyjnego z zainstalowanym serwerem IdeaWebServer – home.pl, nie popularnym Apache.
  2. Dokumentacja wymiennego serwera (pomoc na stronie dostawcy) nie dostarcza pełnej informacji na temat dostępnych komend.
  3. Dostępne w sieci rozwiązania kompresji w locie nadmiernie obciążają zasoby serwera i tym samym spowalniają stronę.

Krok 1

Tworzymy archiwa gzip wybranych plików statycznych js i css.

Przykład:

bootstrap.min.css > bootstrap.min.css.gz
bootstrap-theme.min.css > bootstrap-theme.min.css.gz
jquery-2.1.0.min.js > jquery-2.1.0.min.js.gz

Krok 2

Tworzymy plik .htaccess w katalogu głównym witryny internetowej.

RewriteEngine On

RewriteCond %{HTTP:Accept-Encoding} gzip
RewriteCond %{REQUEST_FILENAME}.gz -f
RewriteRule ^(.*)$ $1.gz [R=302,L]

:Location *.js.gz
  SetMime text/javascript
  Header set Content-Encoding "gzip"
:Location

:Location *.css.gz
  SetMime text/css
  Header set Content-Encoding "gzip"
:Location

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Powyższy skrypt w pierwszej kolejności sprawdza czy przeglądarka klienta obsługuje kompresję gzip (nagłówek Accept-Encoding), a następnie sprawdza czy plik z rozszerzeniem gz istnieje na dysku serwera.
Jeśli powyższe warunki są spełnione, skompresowany plik zostaje wysłany przeglądarce.
W pozostałych przypadkach zwracany jest oryginalny plik, do którego nastąpiło zapytanie.

Ponadto do przekierowania został użyty kod statusu 302 Found zamiast 307 Temporary Moved (brak wsparcia po stronie serwera na chwilę obecną).

markac

Full-stack Web Developer

One thought to “Przyspieszamy stronę internetową – kompresja gzip”

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.