L'optimisation d'un site internet est une étape primordiale. Selon une étude d'Éric Daspet, si l'on rajoutait 500ms au chargement de Google, cela entrainerait une chute de 20% des recherches.
Sans parler du poids des images et de la compression GZIP, qui représentent des aspects essentiels de l'optimisation d'un site, l'un des facteurs les plus importants est le nombre de requêtes effectuées sur le serveur. En effet, pour chaque image, script, animation flash, feuille de style, le navigateur va effectuer une requête afin de récupérer le fichier en question. Et cela va générer des aller-retours, donc prendre du temps.
Pour accélérer le chargement d'une page, une solution intéressante est donc de diminuer le nombre de requêtes vers le serveur. L'idéal pour cela, sans toucher au design du site, est de réduire le nombre de fichiers CSS et JavaScript, et de réduire au maximum leur taille.
Pour cela, Maecia propose aux développeurs Joomla son extension Maecia CSS/JS Cache qui leur permet de façon simple de compresser toutes les feuilles de style dans un seul fichier CSS, et de faire de même pour les fichiers JavaScript.
Installation et utilisation de Maecia CSS/JS Cache
L'installation est classique : comme la plupart des extensions Joomla, Maecia CSS/JS Cache est distribué dans un dossier compressé directement intégrable par le système d'installation des extensions Joomla.
Maecia CSS/JS Cache est doté d'un composant permettant son administration (sélection des fichiers à compresser, avertissement quand le cache n'est plus à jour par rapport aux fichiers sources) et d'un plugin servant à insérer les liens dans l'entête du site.
Pour ajouter des données dans le cache, il suffit d'ajouter un nouvel enregistrement dans l'administration du composant.
Exemple
Répertoires à mettre en cache:
- /templates/MON_TEMPLATE/css
- /templates/MON_TEMPLATE/js
Récursif : permet de compresser également les fichiers contenus dans des sous-répertoires.
Répertoire dans lequel stocker les fichiers en cache:
- /templates/MON_TEMPLATE/cache
Ne pas oublier d'activer le plugin une fois installé.
Il est évidement conseiller d'activer le composant après la phase de développement afin d'éviter de devoir mettre le cache à jour à chaque modification.
Joomla, et les autres alors ?
Le même principe peut être décliné dans la plupart des solutions de publication. Nous essayerons de mettre à disposition Maecia CSS/JS Cache pour eZ Publish, qui est actuellement en cours de développement.
Sinon, vous pouvez toujours manuellement concaténer vos fichiers et les compresser grâce à de nombreux outils dédiés en ligne.
Grands remerciements à Maxime qui avait développé le composant cet été avant de nous quitter pour découvrir le Canada !
Liens utiles
Edit
03/04/2009 - Nouvelle version en ligne (1.0.1b) corrigeant un problème de répertoire de cache par défaut.
29 commentaires
Maxime le 13 mars 2009 à 18:29
Sympa de releaser ça! et merci pour la citation.
gg les gars!
Alex le 31 mars 2009 à 09:14
Hi to all. It's seems a good component, but i cannot exclude some java from my site, or to exclude some modules. Is great that it compress the template but it's desapeering some java like: ads, or traffic monitoring script (I do not see if affect's google analytics). It is possible to make that possible to exclude some modules, or js file?
Frédéric le 31 mars 2009 à 12:31
Hi Alex!
Thanks for the feedback!
If you need to make an exeption for some of your scripts, for now just put them into another folder that the one you selected to be your cache folder.
In the future, we will add an option to exclude some files from the selected folder.
I don't really understand what is the scripts disappearance issue, can you give us an example ?
Alex le 31 mars 2009 à 15:03
Hello!
I take in cache component options my template css folder and the folder where i find the .js files of the template, but from the frontend of the side dissapear the code for trafic analytics.
The adsense remains intact.
Both of this are in module (mod_easyscript).
Thanks!
Christophe le 01 avril 2009 à 19:35
Aucune documentation, j'ai eu le tort de faire confiance à ce composant et mal m'en a pris, je viens de perdre la totalité de mon site !
J'in installé le composant, donné l'adresse d'un repertoire à mettre en cache (comme dans l'exemple) et une fois que j'ai cliqué sur Save : plus rien !
Tout mon répertoire public html a été effacé sans recours possible. Je suis sous Joomla 1.5.9. du moins j'étais.
Hadrien le 01 avril 2009 à 19:57
Bonsoir Christophe,
C'est vraiment étrange nous utilisons le composant sur de nombreux sites, dont certains sur du 1.5.9 et n'avons jamais eu aucun problème.. Vous souvenez vous quel répertoire vous avez sélectionné avant de cliquer sur Save ? Merci
Ryan le 02 avril 2009 à 00:06
Thank you for your stuff, i tried it , working fine
Christophe le 02 avril 2009 à 17:37
Bonsoir, j'ai sélectionné le répertoire templates puis le répertoire du template en cours. J'ai également sélectionné le répertoire des modules sans autre précision il me semble. A la seconde ou j'ai cliqué sur save j'ai été jeté du back office et tout le répertoire public_html a été effacé. Pour moi c'est une perte très très lourde.
Frédéric le 03 avril 2009 à 09:22
Bonjour,
le problème est que vous n'avez pas spécifié de répertoire de cache par défaut. Le répertoire cache par défaut était donc la racine de votre site. Lors de la mise en cache, le composant efface le contenu du dossier pour regénérer le nouveau cache.
Une mise à jour du composant est en ligne, elle fixe ce problème en rajoutant un répertoire '/mcache' à chaque dossier sélectionné comme étant le dossier de cache.
Pour information, ce composant sert uniquement à compresser les fichiers CSS et Javascript, en aucun cas il ne doit être utilisé pour compresser d'autres types de fichier.
Hi,
in fact the component erase the cache folder content to create the new one. If you don't select a cache folder, the defaut one was the root directory.
A new version is now online, it fix the problem by adding an '/mcache' directory to every folder selected as a cache folder.
This component is for CSS and Javascript files only, you can't compress Joomla Modules and other php files.
Christophe le 03 avril 2009 à 13:34
Il aurait été bon de le spécifier... avant ! En attendant tout mon site a été effacé à l'instar d'autres personnes a priori. La bonne idée était de proposer ce module gratuitement, la mauvaise de ne pas l'avoir documenté et d'avoir laissé une telle faille. Il m'a fallu une seconde pour réduire à néant 8 mois de boulot.
Brahim le 03 avril 2009 à 14:20
M. De Baere,
là est toute la différence entre un module offert gratuitement et un module payant.
Nous vous offrons la base ! A vous de le tester et ensuite de l'utiliser en production si cela vous enchante.
De plus, il est indiqué sur le site des extensions Joomla ainsi que dans le fichier XML du composant qu'il est en version 1.0 (1.0.1b maintenant).
Autre chose, si votre site comptait autant pour vous, peut-être auriez-vous du utiliser un de ces autres modules gratuits vous permettant de le sauvegarder régulièrement, à vos risques et périls comme toujours !
Cela dit nous resterons toujours à votre écoute pour faire évoluer et améliorer ce composant.
Bien à vous.
@ltertic le 25 avril 2009 à 08:31
Bonjour,
Je me sens obligé de réagir à la lecture de certains posts ici... Les créateurs de ce composant nous le mettent gracieusement à disposition alors comment vous permettez vous de leur jeter la pierre lorsque VOUS avez eu l'imprudence de le tester à l'aveuglette sur un site en production (c'est quand même de l'inconscience et ce n'est en aucun cas de la faute des créateurs...!)
Ceci étant dit un grand merci pour ce composant qui fonctionne fort bien et qui semble être relativement efficace! En espérant que les remarques qui vous sont parfois adressées injustement ne vous découragent pas!
Félicitations et encore merci!
Paul
Jim le 16 juillet 2009 à 08:28
Merci à Paul pour ce brillant commentaire gratuitement mis à notre disposition, et qu'on testera donc avant de le mettre en production à l'aveuglette... Alors oui, en opensource, les utilisateurs beta participent à la mise au point. Mais non, on ne doit pas laisser de faille de sécurité grossière même dans une version beta. Donc : honte au programmeur. Toutefois, faute avouée est à moitié pardonnée. Comme elle est à moitié avouée (un correctif a été ajouté), elle sera au quart pardonnée. On aurait quand même aimé lire : excusez-moi, je suis un programmeur débutant, j'ai écrit une grosse connerie, çà m'a servi de leçon et, la prochaine fois, je réfléchirai 30s à la sécurité avant de publier un composant... Merci quand même pour le composant. Jim.
Hadrien le 16 juillet 2009 à 14:40
Jim,
je vous invite à regarder le code.
Notre collaborateur qui a développé le composant est loin d'être débutant, bien au contraire. Il n'avait pas prévu que le code serait un jour publié au \grand public\" et donc qu'il fallait prévoir ses mauvaises utilisations. Nous aurions effectivement dû davantage le tester avant de l'offrir à la communauté."""
Kaptain le 14 septembre 2009 à 11:16
Bonjour,
Je viens d'installer votre composant... depuis plus rien n'est accessible sur le site à part la page d'accueil. même l'interface admin n'est plus trouvée...
Pouvez vous m'éclairer svp?
Merci d'avance
Hadrien le 14 septembre 2009 à 11:27
Bonjour Kaptain,
avez-vous toujours le problème ? le site est-il en ligne ? si oui pouvez vous donner l'adresse ?
Kaptain le 14 septembre 2009 à 11:44
Le site est tjs en ligne.
En voici l'adresse. Comme vous pourrez le constater seulement la page d'accueil est accessible.
http://dtc.guild-heberg.fr/Fail/
Merci de votre réponse rapide.
Hadrien le 14 septembre 2009 à 12:20
A priori seules certaines sections sont indisponibles (forum, communauté) êtes vous sûr que cela s'est produit en même temps que l'installation du composant de compression ? Si vous le désactivez est-ce que le problème persiste ? N'avez vous pas effectué d'autres modifications en même temps (exemple : activer l'url rewriting) ?
Kaptain le 14 septembre 2009 à 13:52
C'est la seule modif qui a été faite...
Pour ce qui est de désactivé le composant, je veux bien mais je n'ai plus accès a l'interface admin.. même l'écran de log n'est plus accessible, regardez par vous meme:
http://dtc.guild-heberg.fr/Fail/administrator/
Kaptain le 14 septembre 2009 à 14:45
Bon je ne saurais pas vous dire comment ça s'est passé, mais le site remarche ... je vais de ce pas regarder les effets de votre appli. pb réglé
Darakk le 20 septembre 2009 à 12:43
Il est plutôt marrant de voir des gens se plaindre de la perte d'un site suite à l'installation d'un composant... Joomla permet à presque n'importe qui de créer un site rapidement sans aucune réel connaissance... ce qui d'un coté est vraiment regrettable. Si notre chère Christophe avait fait une sauvegarde ftp et mysql de son site régulièrement comme le font 90% des concepteurs de site, il n'aurait pas eu ce désagrément et de plus aurait pu chercher la cause de son problème comme un grand.
Alyssa le 26 novembre 2009 à 10:56
Bonjour,
Merci pour ce composant, je le test actuellement et pas sur un site en production bien sûr ;)
Comme il ne me semble pas avoir lu qu'il n'est pas compatible PHP 4, je souhaite faire part de mon expérience. Avec Joomla 1.5.14, hébergement 1and1 il faut être en PHP 5, insérer le script le fichier .htaccess.
Friendly Froggy le 18 janvier 2010 à 15:49
Effectivement si on ne fais pas de backup de sa BDD et de ses rep, et qu'on essaye pas en pre-prod avant, ce genre de choses peuvent arriver... mais faut être un peu inconscient pour procéder ainsi...
Merci pour le composant en tout cas! :)
P.S: possibilité de coupler avec Memcached?
Brahim le 18 janvier 2010 à 16:02
Bonjour Friendly Froggy,
nous n'avons fait l'expérience d'un couplage avec Memcached.
Si vous avez un retour d'expérience à nous faire partager n'hésitez pas.
A bientôt.
bartiff le 30 mars 2010 à 13:50
Bonjour !
Perso j'ai essayé sur un site de dev en local et le simple fait d'activer le plugin, cela me désactive l'ensemble de mes css ! LOL je n'arrive pas à comprendre pourquoi !
Hadrien le 30 mars 2010 à 14:05
Bonjour,
effectivement c'est étrange ! Normalement il désactive effectivement les CSS mais il réactive les versions compressées..
Peut être est-ce dû à une mise à jour de Joomla mais cela m'étonnerait
bartiff le 30 mars 2010 à 14:16
Ah!
J'ai viré le dossier \no compress\" de mon dossier css de mon template pensant qu'il ne servait à rien ! Oo C'est grave ? Comment puis-je le remettre ! Sinon je viens de tester Smart Optimizer et mon Yslow monte à B 84 , je me dis que ce n'est pas dégueu !"""
nini le 28 mai 2010 à 08:16
Bonjour,
J'ai voulu testé votre composant, mais en voulant ajouter /templates/montemplate/css
dans le tmp /tmp/cache
je me retrouve avec cette erreur:
Fatal error: Uncaught exception 'RuntimeException' with message 'DirectoryIterator::__construct(../templates/ja_purity_ii/css/template-default.css/) [directoryiterator.--construct]: failed to open dir: Not a directory' in /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php:172 Stack trace: #0 /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php(172): DirectoryIterator->__construct('../templates/ja...') #1 /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php(178): CssJsCache->_isDirectoryUpToDate('../templates/ja...', 'template-defaul...') #2 /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php(178): CssJsCache->_isDirectoryUpToDate('../templates/ja...', '@eaDir/') #3 /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php(178): CssJsCache->_isDirectoryUpToDate('../templates/ja...', 'handheld/') #4 /volume1/web/joomla/administrator/co in /volume1/web/joomla/administrator/components/com_cssjscache/library/cssjscache.php on line 172
Avez-vous une idée de ce qui s'est passé ?
Brahim le 04 juin 2010 à 10:46
Bonjour nini,
cette erreur est très étonnante, il s'agit d'un problème au niveau de l'itérateur permettant de parcourir récursivement les répertoires.
Durant le parcours des répertoires de votre template il semble que l'un de vos fichiers CSS soit considéré comme un répertoire à parcourir, cela pose donc forcément problème.
Tout se passe ici /administrator/components/com_cssjscache/library/cssjscache.php à la ligne 177 :
if ($file->isDir() && substr($file->getFilename(), 0, 1) != '.' && $this->isRecursive()) {
if (($result = $this->_isDirectoryUpToDate($directory, $file->getFilename() . DIRECTORY_SEPARATOR)) !== true) {
$invalidatedFiles = array_merge($invalidatedFiles, $result);
}
}
Nous ne comprenons pas comment un fichier CSS pourrait passer ce test donc être considéré comme un répertoire par la fonction DirectoryIterator::isDir (http://www.php.net/manual/fr/directoryiterator.isdir.php).
Pouvez-vous modifier le bloc de code cité ci-dessus par celui-ci et nous envoyer le résultat ?
echo $fileinfo->getFilename();
if ($file->isDir() && substr($file->getFilename(), 0, 1) != '.' && $this->isRecursive()) {
echo ' is a directory';
}