Accélérer Joomla sans utiliser le cache

de | 9 février 2012

Optimiser la vitess de son site Joomla

Comme vous le savez, Joomla est un CMS très puissant mais qui demande une configuration aux petits oignons lorsqu’il s’agit de la problématique de la performance. Si les systèmes de cache de Joomla sont très bien fait, on peut commencer par faire quelques optimisations plus légères. C’est l’une de ces optimisations que nous allons voir dans cet article.

Si vous souhaitez mettre en route le cache de Joomla, nous avons déjà fait un article à ce sujet. Cela dit, il est tout de même conseiller de réaliser cette modification sur votre template pour accélérer la rapidité d’affichage de Joomla chez vos visiteurs.

Plus qu’une optimisation, il s’agit surtout d’une astuce qui vise à demander au navigateur de commencer le téléchargement de la page Internet et de finir par les fichiers Javascript qui sont volumineux. En effet, Joomla utilise Mootools qui est une librairie très complète mais dont les fichiers sont un peu lourd à charger.

Pour activer cette modification il faut tout d’abord désactiver l’insertions des fichiers JS dans le HEAD du template. Il vous faut modifier le fichier index.php de votre template Joomla pour y insérer ces instructions PHP avant le code HTML :

// rajouter avant <html>
$doc = JFactory::getDocument();
unset($doc->_scripts[$this->baseurl./media/system/js/core.js]);
unset($doc->_scripts[$this->baseurl./media/system/js/mootools-core.js]);
unset($doc->_scripts[$this->baseurl./media/system/js/mootools-more.js]);
unset($doc->_scripts[$this->baseurl./media/system/js/caption.js]);
$scripts =<script src=".$this->baseurl./media/system/js/core.js" type="text/javascript"></script>‘;
$scripts .=<script src=".$this->baseurl./media/system/js/mootools-core.js" type="text/javascript"></script>‘;
$scripts .=<script src=".$this->baseurl./media/system/js/mootools-more.js" type="text/javascript"></script>‘;
$scripts .=<script src=".$this->baseurl./media/system/js/caption.js" type="text/javascript"></script>‘;

Ainsi, les fichiers JS ne seront plus chargés directement et le code de chargement (les balises SCRIPT) est stockée dans la variable $scripts pour une utilisation ultérieure. Notez bien que si vous utilisez des fichiers JS customs, vous pouvez les rajouter à la liste.

Ensuite, toujours dans le fichier index.php, vous pouvez rajouter le chargement des fichiers Javascript juste avant l’instruction qui ferme le corps de votre template :

// rajouter avant </body>
<?=$scripts?>

Maintenant, lorsqu’un visite navigue une première fois sur votre site, la page devra s’afficher plus rapidement. En effet, le navigateur va déjà charger le code HTML et, pendant son rendu, il va télécharger les fichiers JS. Ce comportement varie d’ailleurs pour chaque navigateur.

Notez bien qu’il est possible, en fonction des fonctionnalités Javascript utilisées par votre template ou les modules et extensions de votre site, que cette astuce ne fonctionne pas. En tout cas, ça ne vous coute rien d’essayer.

Cette modification a été testée avec succès sur Joomla 1.7.x et Joomla 2.5.x.

4 réflexions au sujet de « Accélérer Joomla sans utiliser le cache »

  1. Nicolas Auteur de l’article

    Les gains sont significatifs mais peuvent entrainer de sérieux dysfonctionnements sur le frontend si des adaptations ne sont pas faites (au niveau de la création et modification des articles Joomla).

    Il est possible de voir les gains depuis Google Analytics (temps de chargement du site) au bout de quelques jours/semaines et de comparer avec une période antérieure.

  2. Freelance Joomla Strasbourg

    Merci, j’en prend note.
    Qu’entendez-vous par « adaptations au niveau de la création et modification des articles » ? Pour infos, je surcharge la vue des articles et de la home (et je ne charge pas les scripts JS en fin de page, ils sont juste désactivés). Y a t-il des soucis particuliers à anticiper ?

  3. Nicolas Auteur de l’article

    En clair : après avoir fait vos modifications, vérifiez bien que les boutons (celui pour ajouter une photo par exemple) présents sous l’éditeur de l’article fonctionnent bien.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.