Je voulais améliorer les performance de mon annuaire d’annuaires et j’ai donc voulu compresser mes fichier css et javascript en faisant une petite compression gzip.
J’ai donc suivis ce tutoriel et hop en 5 minute tout fonctionnai à merveille… mais en local… une fois sur mon hébergement j’avais une belle erreur 500.. beurk.
En fait, 1and1 n’autorise pas la modification des valeur PHP avec un htaccess il propose par contre d’utiliser un php.ini . Mais comme je suis quelqu’un de tétu j’ai trouvé une autre solution qui me plait mieux :). Je vous la livre ici:
Je créé un fichier .htacces que je place dans le dossier qui contient mes fichiers css (/css)
RewriteEngine On RewriteRule (.*)\.css /css/compressecss.php?file=$1.css [L]
Je créé ensuite un fichier php compressecss.php que je place lui aussi dans mon dossier css (/css)
ob_start("ob_gzhandler");
header("Content-type: text/css; charset: ISO-8859-1");
echo (file_get_contents ($file));
Et voila maintenant tout mes fichiers css seront compressés et je gagne de la bande passante :).
Pour les fichiers javascript il suffit de faire pareil en modifiant text/css par text/javascript

Greg
Salut
Tout d’abord, merci pour ton script. Je l’ai mis en place sur le site d’un client. Après avoir retravaillé mes liens relatifs vers mon css, j’ai reussi à tout faire marcher.
Par contre d’après tools.pingdom.com je ne gagne rien en kb. Tu as pu tester un avant / apres ?
Merci
greg
maniT4c
J’ai en effet tester sur l’un de mes sites et j’avais un gain minime pour les css et un peu mieux pour les scripts. Par contre j’utilise firebug et l’onglet réseau pour tester.
Meudah
Salut ! Alors là chapo ! Ton script fonctionne à merveille et me permet une compression de plus de 50%. Je passe de 238ko à 123ko. Une compression de plus de 50%.
Il fonctionne à merveille si vous souhaitez compresser les librairies/frameworks – Js/Css comme Jquery, Prototype, Mootools, etc.
Merci à toi !
Dado Webmaster
Je fais partie de ces gens qui bidouillent avec des bouts de code récupérés sans les comprendre et j’ai mis un moment à faire fonctionner celui-ci, jusqu’à ce que je pense à enlever /css/ dans le chemin du fichier php, puisque les deux fichiers sont au même niveau :
RewriteEngine On
RewriteRule (.*)\.css compressecss.php?file=$1.css [L]
Voilà, si ça peut peut-être servir à d’autres pilleurs-bidouilleurs… En tout cas merci Vince ! Avec la récente apparition des performances du site dans les webmasters tools de Google et la mise en avant de leur add-on “Page Speed”, qui l’accompagne, cette page devrait être pas mal visitée…
Topper
Merci pour ce bout de code très utile. :-)
Dado Webmaster
Depuis l’autre jour, je me suis aperçu d’un inconvénient de ta solution, Vince, c’est que le validateur de css du w3c ne comprend plus rien.
Cela m’a poussé à continuer mes recherches, et apparemment il y a aussi ça qui fonctionne : trois lignes dans le .htaccess à la racine pour activer la compression gzip sur les css et les js sur un serveur mutualisé ovh :
SetOutputFilter DEFLATE
Dado Webmaster
euh, pardon, le bout de code, c’est ça (mes balises sont interprétées dans mon premier commentaire):
<Files ~ « \.(css|js)$ »>
SetOutputFilter DEFLATE
</Files>
Tiankris
J’ai egalement ajouté ceci dans le fichier compressecss.php (ou compressjs.php par la même), car l’ajout d’un fichier .htaccess dans le dossier ou se trouve mon fichier css me faisait perdre les dates d’expiration:
Ce qui donne pour le fichier compressecss.php:
maniT4c
@dado très intéressant Dado merci beaucoup pour cette info j’essaierai. J’avoue ne pas m’être posé la question du validateur car je le passe en règle général avant la compression. je fait ma compression en dernier.
Le routard
Merci pour l’astuce, ca fera une optimisation supplémentaire :)
Liagre Sebastien
@ Tiankris: dans ton post du 20 decembre tu note : Ce qui donne pour le fichier compressecss.php: mais plus rien ensuite je pense qu’il manque un bout du message
si tu pouvais le poster, merci.
elo
Et un gzencode des CSS et JS ne serait pas tout simplement beaucoup plus rapide ?
maniT4c
@Elo gzencode va forcer la compression gzip tandi que ob_gzhandler va dans un premier temps vérifier le type de compression supporter par le navigateur puis utiliser la plus appropriée ou aucune si le navigateur ne supporte pas la compression.
Darakk
J’ai essayé la solution de « Dado Webmaster », mais chez 1and1 aucun changement, le validateur w3c toujours en panique :s