Pour améliorer la vitesse d’un site Web hébergé sur Apache*2, il existe quelques optimisations simples, sans toucher aux paramétrages du serveurs, ni au code du site. Il s’agit de quelques règles à ajouter au(x) fichier(s) *.htaccess du site pour en augmenter rapidement les performances.

* Mise à jour:* depuis l’écriture de cet article, comme bon nombre d’administrateurs, je suis passé à NGinx en remplacement d’Apache… sans aucun regret.

Compression du Contenu

Pour compresser vos fichiers texte (*.css, *.js, *.html, *.html, *.xhtml, and *.php ) à l’aide du module mod-deflate de Apache2, il suffit d’ajouter les lignes suivantes dans votre fichier .htaccess:

<ifModule mod_deflate.c>  
 AddOutputFilterByType DEFLATE text/html text/xml text/css text/plain  
 AddOutputFilterByType DEFLATE image/svg+xml application/xhtml+xml application/xml  
 AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml  
 AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript application/json  
 AddOutputFilterByType DEFLATE application/x-font-ttf application/x-font-otf  
 AddOutputFilterByType DEFLATE font/truetype font/opentype  
 </ifModule>

 Activer le Cache du Navigateur

Pour mettre en cache sur le client et gérer ce cache deux modules sont disponibles, mod_expires et mod_headers qui s’utilisent, par exemple, de la manière suivante.

#BEGIN Expire headers  
 <ifModule mod_expires.c>  
 ExpiresActive On  
 ExpiresDefault “access plus 1 seconds”  
 ExpiresByType image/x-icon “access plus 2592000 seconds”  
 ExpiresByType image/jpeg “access plus 2592000 seconds”  
 ExpiresByType image/png “access plus 2592000 seconds”  
 ExpiresByType image/gif “access plus 2592000 seconds”  
 ExpiresByType application/x-shockwave-flash “access plus 2592000 seconds”  
 ExpiresByType text/css “access plus 604800 seconds”  
 ExpiresByType text/javascript “access plus 216000 seconds”  
 ExpiresByType application/javascript “access plus 216000 seconds”  
 ExpiresByType application/x-javascript “access plus 216000 seconds”  
 ExpiresByType text/html “access plus 600 seconds”  
 ExpiresByType application/xhtml+xml “access plus 600 seconds”  
 </ifModule>  
 # END Expire headers  
 # BEGIN Cache-Control Headers  
 <ifModule mod_headers.c>  
 <filesMatch “\.(ico|jpe?g|png|gif|swf)$”>  
 Header set Cache-Control “max-age=2592000, public”  
 </filesMatch>  
 <filesMatch “\.(css)$”>  
 Header set Cache-Control “max-age=604800, public”  
 </filesMatch>  
 <filesMatch “\.(js)$”>  
 Header set Cache-Control “max-age=216000, private”  
 </filesMatch>  
 <filesMatch “\.(x?html?|php)$”>  
 Header set Cache-Control “max-age=600, private, must-revalidate”  
 </filesMatch>  
 </ifModule>  
 # END Cache-Control Headers  
 # BEGIN Turn ETags Off  
 <ifModule mod_headers.c>  
 Header unset ETag  
 </ifModule>  
 FileETag None  
 # END Turn ETags Off  
 # BEGIN Remove Last-Modified Header  
 <ifModule mod_headers.c>  
 Header unset Last-Modified  
 </ifModule>  
 # END Remove Last-Modified Header

Ces petites modifications qui semblent anodines ont de grandes répercussions sur les temps de chargement de vos sites.

Les mesures sont effectuées avec le site  WebPageTest.org , un “Test Location” sur Paris et “browser” IE 8. L’important est de comparer les vitesses dans les mêmes conditions. Les mesures ont été prises à plusieurs reprises et vous trouverez le tableau récapitulatif ci-dessous. Notons qu’il y a peu d’éléments sur ce site de test et que les écarts (pourcentages) sont plus importants pour un site avec plus d’éléments.

Le premier test a été réalisé avec un fichier .htaccess sans aucune modification et le second avec les modifications ci-dessus. Aucun autre cache ou autre mécanisme était activé.

Un excellent catalogue d’optimisation sur Scribd.

sources: samaxes