Lorsque ce site n’était encore qu’un simple blog personnel le site était hébergé chez 1and1, hébergeur choisi à l’époque pour son rapport qualité / prix qui était relativement imbattable (il est maintenant hébergé chez Digital Océan et toujours sur WordPress).

Avec le succès grandissant du site, optimiser les performances est devenu un véritable enjeu. Dans un premier temps, la mise en oeuvre de plusieurs tweaks comme par exemple l’optimisation du htaccess a permis quelques améliorations qui se sont vites révélées insuffisantes jusqu’à la découverte d’une option très efficace : la compression GZIP.

screenshot 2015-06-23 à 23.16.22

Cette option qui s’active coté serveur permet de réduire drastiquement le poids des pages et donc d’accélérer leur affichage. Seul hic, 1and1 n’active pas cette option ni sur les serveurs mutualisés ni sur les serveurs dédiés…

Mais heureusement, il existe des moyens détournés d’activer la compression GZIP sur votre hébergement 1and1 !

L’astuce décrite ci-dessous permet en effet d’envoyer aux navigateurs qui viendront consulter les pages de vos sites web des versions compressées de ces dernières, mais attention le prix à payer est que la compression sera un tache supplémentaire demandée au serveur apache. En fonction de la puissance de votre serveur, cela peut améliorer le temps de chargement pour vos visiteurs ou l’empirer si votre serveur n’est pas assez puissant. Le mieux étant bien sur de le tester, la manipulation n’étant pas compliquée et le retour arrière très facile.

1/ Modifier le .htaccess

Ajouter les lignes suivantes en début de fichier, cela indique à votre serveur apache de traiter également les fichiers html et htm (afin de les compresser à la volée, ce que nous verrons plus bas). Le RemoveHandler n’est pas obligatoire mais la compression des fichiers CSS générait des dysfonctionnement d’affichage.

AddHandler x-mapp-php6 .php .html .htm .txt .css .js
RemoveHandler .css

2/ Créer un fichier Gzip.php

C’est lui qui va se charger de compresser vos fichiers à la volée. Vous pouvez le déposer n’importe où à la racine de votre répertoire contenant vos fichiers web. Ajoutez y les lignes suivantes entre les balises « <?php » et « ?> » :

if (isset($_SERVER['SCRIPT_FILENAME'])) {
$timestamp = filemtime(__FILE__);
header('Last-Modified: ' . $timestamp);
$expires = 60*60*24*14;
header("Pragma: public");
header("Cache-Control: maxage=".$expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time()+$expires) . ' GMT');
header('Vary: Accept-Encoding');
$pathinfo = pathinfo($_SERVER['SCRIPT_FILENAME']);
$extension = $pathinfo['extension'];

if ($extension == 'css') {
header('Content-type: text/css');
}
if ($extension == 'js') {
header('Content-type: text/javascript');
}
}

 

3/ Créer un fichier php.ini

À copier dans tous les répertoires de votre site. Ajoutez y les lignes suivantes sans oublier de modifier le chemin vers le répertoire contenant le fichier gzip.php.

#regle la compression
zlib.output_compression = On
zlib.output_compression_level = 8
auto_prepend_file=[chemin vers votre dossier web]/gzip.php
AllowOverride All

#Masque les warning et erreurs
display _errors = off

 

4/ Tester la compression

En vous rendant sur ce site vous allez pouvoir vérifier que vos pages sont maintenant compressées avant d’être envoyées et que vos performances s’en trouvent améliorées !

 

Enjoy 1and1 !