1. Installation des modules Apache
Par défaut sous Debian le module deflate est enclenché, le module headers nous serviras dans le cadre d’environnement utilisant un proxy. On enclenche donc ces deux modules au niveau d’Apache, pour cela on lance une console SHH sur notre serveur et on lance les commandes suivantes :
a2enmod deflate
a2enmod headers
On relance notre Apache pour prendre en compte les nouveaux modules :
/etc/init.d/apache2 restart
2. Optimiser la configuration du module Deflate (gzip)
Nous allons optimiser la configuration de module Deflate qui de base sous Debian est assez minimaliste, pour cela on édite le fichier suivant :
nano /etc/apache2/mods-available/deflate.conf
On modifie la configuration de la manière suivante :
<IfModule mod_deflate.c>
DeflateCompressionLevel 3
</IfModule>
<Location />
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
Explications :
DeflateCompressionLevel 3 détermine le niveau de compression, les valeurs vont de 1 à 9, de base le choix est à 1.
AddOutputFilterByType DEFLATE xxx/xxx indiq ue le mime type des éléments à compresser.
SetOutputFilter DEFLATE active la compression.
SetEnvIfNoCase Request_URI \.(?:xxx|xxx|xxx)$ no-gzip dont-vary ne compresse pas les fichiers car ils possèdent déjà une compression.
BrowserMatch ^Xxx/x gzip-only-text/html n’active la compression des pages que sous certaines conditions selon le type de navigateur.
Header append Vary User-Agent env=!dont-vary configuration spécifique pour les proxy.
La configuration du module est terminée, il est nécessaire de relancer Apache :
/etc/init.d/apache2 restart
Pour vérifier que la compression soit fonctionnelle, vous pouvez utiliser des outils comme YSlow pour prendre les valeurs avant et après l’optimisation de votre module, pour ma part j’ai constaté un gain significatif de plus de 60 % sur la vitesse de rendu de mes projets.
viaOptimiser le Gzip de son Apache pour Google | blog.utopiaz.org // Développement, Open Source et contexte Web2.0.
Optimiser le Gzip de son Apache pour Google | blog.utopiaz.org // Développement, Open Source et contexte Web2.0
1. Installation des modules Apache
Par défaut sous Debian le module deflate est enclenché, le module headers nous serviras dans le cadre d’environnement utilisant un proxy. On enclenche donc ces deux modules au niveau d’Apache, pour cela on lance une console SHH sur notre serveur et on lance les commandes suivantes :
a2enmod deflate
a2enmod headers
On relance notre Apache pour prendre en compte les nouveaux modules :
/etc/init.d/apache2 restart
2. Optimiser la configuration du module Deflate (gzip)
Nous allons optimiser la configuration de module Deflate qui de base sous Debian est assez minimaliste, pour cela on édite le fichier suivant :
nano /etc/apache2/mods-available/deflate.conf
On modifie la configuration de la manière suivante :
<IfModule mod_deflate.c>
DeflateCompressionLevel 3
</IfModule>
<Location />
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE image/svg+xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php
AddOutputFilterByType DEFLATE application/x-httpd-fastphp
AddOutputFilterByType DEFLATE application/x-httpd-eruby
SetOutputFilter DEFLATE
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.pdf$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.avi$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mov$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp3$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.mp4$ no-gzip dont-vary
SetEnvIfNoCase Request_URI \.rm$ no-gzip dont-vary
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
# Make sure proxies don’t deliver the wrong content
Header append Vary User-Agent env=!dont-vary
</Location>
Explications :
DeflateCompressionLevel 3 détermine le niveau de compression, les valeurs vont de 1 à 9, de base le choix est à 1.
AddOutputFilterByType DEFLATE xxx/xxx indiq ue le mime type des éléments à compresser.
SetOutputFilter DEFLATE active la compression.
SetEnvIfNoCase Request_URI \.(?:xxx|xxx|xxx)$ no-gzip dont-vary ne compresse pas les fichiers car ils possèdent déjà une compression.
BrowserMatch ^Xxx/x gzip-only-text/html n’active la compression des pages que sous certaines conditions selon le type de navigateur.
Header append Vary User-Agent env=!dont-vary configuration spécifique pour les proxy.
La configuration du module est terminée, il est nécessaire de relancer Apache :
/etc/init.d/apache2 restart
Pour vérifier que la compression soit fonctionnelle, vous pouvez utiliser des outils comme YSlow pour prendre les valeurs avant et après l’optimisation de votre module, pour ma part j’ai constaté un gain significatif de plus de 60 % sur la vitesse de rendu de mes projets.
viaOptimiser le Gzip de son Apache pour Google | blog.utopiaz.org // Développement, Open Source et contexte Web2.0.