Optimiser ses CSS côté serveur automatiquement

Optimiser la vitesse de chargement de ses pages Web, ça en devient presque à la mode, surtout depuis le pavé dans la marre jeté par Google.

Voici de quoi remuer tout ça, et augmenter nos scores Yslow ou Page Speed (et nous aimons ça). On va chasser les octets superflus, on va s’attaquer aux CSS.

Et l’occasion qui fait le larron, c’est la sortie de MAX CssMin, un optimiseur CSS écrit en PHP que je viens de releaser en GNU GPL. Une sortie du placard car cela fait un petit moment que je l’utilise pour différents projets. Il ne touche pas à la sémantique, que de l’amélioration de syntaxe. Pour l’instant, c’est le meilleur que j’ai pu essayé. Bon, à la fin, c’est la guerre des octets, que des micros optimisations, mais j’en ai encore quelques unes en réserves. La version 0.2 verra une option pour tout mettre sur une seule ligne. Pour l’instant ça le fait pas encore (vous pouvez en éditant le fichier cssmin et en décommentant la ligne en dessous du commentaire « Efface les retours à la ligne (à désactiver par défaut) »).

On va se faire un petit script à placer sur le serveur, lancé par cron chaque nuit qui va optimiser vos fichiers CSS, tout seul.

Aller, on se ssh à son serveur.

Les prérequis (rien de bien extraordinaire, adaptez la commande à votre système de paquet) :

aptitude install php5-cli unzip

On commence par installer le MAX CssMin en version script (CLI). Copiez-collez ceci (après avoir lu et compris) dans votre terminal :

wget http://libre.maxbusiness.fr/files/cssmin/cssmin-0.1.zip
wget http://libre.maxbusiness.fr/files/cssmin/cssmin-0.1.zip.md5
md5sum -c cssmin-0.1.zip.md5
unzip cssmin-0.1.zip
chmod +x cssmin
mv cssmin /usr/local/bin
cssmin --help

Bonus, ça vérifie même la somme md5 de l’archive. C’est installé. Tapez cssmin --help pour les options courantes.

On va créer un script shell, nommons le css.sh qui va contenir les commandes de minification. C’est lui qui sera appelé par la tâche cron toutes les nuits. Créons le. Voici son contenu :

#!/bin/sh
cssmin -rbq /var/www/monsite/css/style.css
cssmin -rbq /var/www/monsite2/css/style2.css

Explications : -q vous passe en mode quiet (pas de blabla sauf si erreurs), -r c’est le mode replace (on écrase le fichier CSS par sa version minifiée) et -b c’est le mode better (on ne fait les changements que si le résultat est meilleur). En l’occurrence, le mode better vous permettra de ne pas avoir la date de modification du fichier mise à jour chaque nuit (apache s’en sert pour les instructions de cache aux navigateurs).

Vous placer une ligne comme ça par fichier à optimiser. Je vous conseille d’essayer en console avant (sans l’option -q).

On rend ce script exécutable :

chmod +x css.sh

Maintenant, on enregistre une tâche cron, réglée pour être lancée pour tous les jours à 03:05. Tapez crontab -e et ajoutez dont une ligne :

5 3 * * * /home/mon/chemin/vers/mon/script/css.sh

Et voilà. Vos fichiers CSS se ré-optimiseront tout seuls, même après vos uploads de nouvelles versions, non optimisées.

MAX CssMin n’en est qu’à ses débuts publics, mais on peut déjà faire des choses intéressantes avec. Un bonus pour la fin :

cat style-1.css style-2.css style-3.css | cssmin > all-min.css

À propos de Maxime Garcia

Jeune entrepreneur passionné du Web. Président de MAX Business, éditeur de solution de gestion pour entreprises.
Cette entrée a été publiée dans Système, Webmastering, avec comme mot(s)-clef(s) , , . Vous pouvez la mettre en favoris avec ce permalien.

6 réponses à Optimiser ses CSS côté serveur automatiquement

  1. SiebmanB dit :

    Il est de toi l’optimiseur ? C’est génial :D
    Après c’est bizarre que sur le site de l’optimiseur on puisse pas voir que c’est de toi…

  2. Maxime dit :

    Ah bah oui. Du coup, je me suis mis sur la page développement.

    Je l’avais écrit pour ADNPC.net à la toute base.

  3. SiebmanB dit :

    Mais un projet aussi classe il faut qu’on sache facilement que ça vient de toi, et que ce soit marqué sur ton CV et autre. Histoire de pas perdre le bénéfice de ton travail ;-)

  4. Julien THERIN dit :

    ça à l’air sympa tout ça, j’y jetterai un oeil lorsque j’aurai plus de temps devant moi :)

    Pour l’instant, je fais actuellement 2 feuilles de style : une visible que je modifie et une ultra compressée par cssoptimiser, cleancss ou autre suivant la taille finale du fichier final.

  5. Toops dit :

    Pratique comme outil, c’est un peu pénible à faire à la main.
    Mais pour que Yslow donne une bonne note il faut faire la même chose avec les javascripts avec jsmin. Puis fusionner les javascript pour réduire le nombre de requêtes DNS. Normalement, une page ne contient plus que le corps HTML, un CSS, et un fichier javascript. (enfin, c’est la théorie … :=) )

  6. FireWebSSO dit :

    En utilisant les Serveur Side Include Apache (SSI), il est possible d’inclure soit les fichiers css ‘mininfiés’ soit les fichiers d’origines, cela peut-être bien pratique pour différencier la version en dev et la version en exploitation.