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.
- Autor tego posta korzysta z serwera produkcyjnego z zainstalowanym serwerem IdeaWebServer – home.pl, nie popularnym Apache.
- Dokumentacja wymiennego serwera (pomoc na stronie dostawcy) nie dostarcza pełnej informacji na temat dostępnych komend.
- 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ą).
One thought to “Przyspieszamy stronę internetową – kompresja gzip”