Wstęp
Mod_deflate to moduł pozwalający na zmniejszenie rozmiaru danych na serwerze Apache nim zostaną one wysłane do klienta. Dzięki zastosowaniu mod_deflate, wydajność dowolnego serwisu internetowego działającego na serwerze Apache może zostać znacznie zwiększona. Informacje na temat kondycji serwisu www można uzyskać za pomocą narzędzia PageSpeed, znajdującego się pod adresem: https://developers.google.com/speed/pagespeed/insights/.
Czego nauczę się w tym poradniku?
- Jak włączyć i skonfigurować moduł mod_deflate
Wymagania
- System operacyjny z rodziny UNIX/Linux
- Działający serwer Apache
- Plik tekstowy do przetestowania działania kompresji
Poziom trudności
- Łatwy
Jak włączyć i skonfigurować moduł mod_deflate?
Informacja: W niniejszym poradniku polecenia testowano w systemie operacyjnym Ubuntu 16.04.
Włączanie mod_deflate
Lista aktualnie włączonych modułów Apache może zostać wyświetlona za pomocą polecenia apachectl.
$ sudo apachectl -t -D DUMP_MODULES
W celu sprawdzenia czy moduł mod_deflate jest aktywny, należy zawęzić wyniki poprzedniego polecenia, stosując komendę grep.
$ sudo apachectl -t -D DUMP_MODULES | grep deflate
W otrzymanej informacji zwrotnej znajdować się będzie deflate_module (shared)
jeżeli mod_deflate jest aktywny.
W sytuacji gdy moduł mod_deflate jest nieaktywny, należy w pierwszej kolejności upewnić się, że jest on dostępny.
$ ls /etc/apache2/mods-available | grep deflate
Dodatkowo koniecznym jest sprawdzenie czy w pliku /etc/apache2/mods-available/deflate.load
linia:
LoadModule deflate_module /usr/lib/apache2/modules/mod_deflate.so
nie zawiera znaku #
na jej początku. Jeżeli tak, powinien on zostać usunięty.
Aby aktywować moduł mod_deflate należy skorzystać z polecenia a2enmod.
$ sudo a2enmod deflate
Następnie należy przeładować konfigurację Apache.
$ sudo service apache2 reload
Konfiguracja
Konfiguracja modułu mod_deflate znajduje się w pliku /etc/apache2/mods-available/deflate.conf
.
Przykład domyślnej konfiguracji znajduje się poniżej.
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
# these are known to be safe with MSIE 6
AddOutputFilterByType DEFLATE text/html text/plain text/xml
# everything else may cause problems with MSIE 6
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/x-javascript application/javascript application/ecmascript
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/xml
</IfModule>
</IfModule>
Testowanie
Działanie kompresji możemy przetestować za pomocą narzędzia wget.
Jeżeli narzędzie nie jest dostępne w systemie, na którym przeprowadzamy testy, można je zainstalować (w systemie Debian/Ubuntu) za pomocą polecenia:
$ sudo apt-get install wget
Informacja: Na serwerze Apache, na którym została włączona kompresja potrzebny będzie przykładowy plik przy zastosowaniu, którego będzie możliwe sprawdzenie jej działania.
Aby sprawdzić rozmiar pliku bez kompresji, należy go pobrać z zastosowaniem narzędzia wget.
$ wget http://mydomain.com/myfile.txt
Rozmiar pliku może zostać wyświetlony za pomocą polecenia ls.
$ ls -lah
Jak widać na powyższym zrzucie ekranu, rozmiar pobranego, przykładowego pliku (bez kompresji) to ~ 60KB.
By sprawdzić rozmiar skompresowanego pliku, należy do polecenia wget dodać nagłówek Accept-Encoding: gzip
.
$ wget --header="Accept-Encoding: gzip" http://mydomain.com/myfile.txt
W rezultacie, rozmiar skompresowanego pliku to ~ 17KB.
Moje inne publikacje
Szczegółowe prawa dostępu z ACL
Wysyłka poczty z narzędziem Sendmail
Synchronizacja danych z narzędziem Rsync
Zarządzanie zaporą sieciową z narzędziem UFW
Podtrzymywanie procesów z narzędziem Supervisor
Czy włączenie tego modułu mocno spowalnia samo działanie serwera? Mam na myśli to, że jak Apache2 dostaje zapytanie to musi skompresować każdy plik który zostanie odesłany.
DeflateCompressionLevel
(w pliku konfiguracyjnymdeflate.conf
) na niższą wartość (gdzie 1 oznacza najniższy poziom kompresji), aby znaleźć balans pomiędzy kompresją, a obciążeniem procesora. Mam nadzieję, że to pomoże :) Pozdrawiam!Cześć @jarric, włączenie mod_deflate może obciążyć procesor i to całkiem mocno. Dodatkowo, domyślnie poziom kompresji ustawiony jest na wartość maksymalną (9). W celu optymalizacji działania serwera można poeksperymentować z ustawieniemDzięki za odpowiedź, wszystko jasne :)