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.
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
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 ustawieniem
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!Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit
Dzięki za odpowiedź, wszystko jasne :)
Downvoting a post can decrease pending rewards and make it less visible. Common reasons:
Submit