Parler de la performance web c’est d’abord convaincre que c’est important, puis rappeler qu’il y a quelques actions très simples à mettre en oeuvre qui ont un effet immédiat. En général je parle du cache sur les ressources statiques, et de la compression des contenus.
Reste que compresser les images correctement c’est long. Smushit accélère tout ça mais c’est du one shot. Ce qu’il faut c’est intégrer des outils comme optipng dans votre processus de publication.
Alors voilà, pour un gros site au travail c’est réalisable avec un peu d’investissement. Sur un site de moindre importance c’est tout aussi important mais l’investissement devient lourd. C’est là que des outils automatiques sont intéressants, et le premier que je vous propose est un plugin wordpress, wp-smushit, qui envoie automatiquement vos images à smushit. Plus besoin d’opérations manuelles, wordpress s’occupe de tout.
Le second que j’ai croisé est un script PHP qui prend la main sur tout téléchargement CSS ou Javascript : SmartOptimizer. PHP permet de concaténer, minimiser, compresser, et envoyer avec les entêtes de cache appropriées. Le résultat côté serveur est bon, mais je reste dubitatif sur l’idée de faire passer par PHP toutes les ressources statiques. Les ressources serveur vont souffrir de manière importante, et si vos serveurs deviennent lent votre performance client ne va finalement pas y gagner.
En effet, il y a un gros travail à faire avec les délivreurs de contenus (les serveurs et les outils de publications) pour que les réglages de base soient performants ou qu’ils mettent en avant des réglages alternatifs performants. Côté serveur, on pourrait activer par défaut du gzip ou proposer une config alternative à l’installation (avec du cache pour les ressources statiques peut-être).
Idem pour les outils de publication, wp-smushit me semble très intéressant (même si un traitement sur le serveur serait plus intéressant que d’envoyer à smushit).
Par contre, SmartOptimizer me semble pas top du tout. Minifier, compresser, cacher c’est faisable sans passer par PHP (et bien mieux). Pour embedder et concaténer, je suis encore plus réticent, car il vaut mieux laisser aux développeurs le soin de découper en module, estimer ce qui est le plus intéressant selon l’audience, etc.
Si l’on vient sur le terrain des outils automatiques liés aux délivreurs de contenu, il serait juste de citer SPIP qui dans sa version 2.0 propose nativement compactage, minification et concaténation des javascript et feuilles de style.
J’en avais parlé, de façon un peu provocatrice, avant la sortie en version stable de SPIP 2.0 ici : http://www.spip-blog.net/SPIP-2-0-vous-fait-economiser-750.html
S’appuyant sur son système de cache, le travail n’est fait par SPIP qu’une seule fois, lors du calcul initial du cache, et produit un fichier css statique par type de media, ainsi qu’un fichier js statique.
Pour abonder dans le sens d’Eric, il a été choisi de produire des fichiers statiques et de laisser le soin au serveur de produire les en-têtes optimisés plutôt que de passer par php à chaque chargement de la feuille de style ou du javascript. Mais petit raffinement, SPIP produit les fichiers g-zippés .gz associés aux fichiers statiques, ce qui permet potentiellement à apache d’épargner la compression à la volée à chaque service des fichiers js et css minifiés.
Maintenant sur le fond, je pense aussi que l’optimisation des outils de publication est un enjeu important, car cela peut avoir un impact global sur la qualité des sites web, même si les optimisations proposées ne peuvent être aussi poussées que le sur-mesure que l’on peut se permettre sur un projet particulier.
Le code de cet outil de compactage vient d’être séparé du core de SPIP. C’est sans doute rien du tout à faire pour le transformer en plugin pour votre CMS préféré.
Il y a aussi PHP SPEEDY qui fait ça : http://aciddrop.com/php-speedy/
Mais je rejoins Rik sur son analyse et je préfère également adapter l’optimisation des contenus en fonction des besoins et surtout d’automatiser cette tâche en amont.