• Optimisation>JQuery -
  • Publié le :  | Modifié le :

Optimiser le chargement de Jquery.

L'utilisation de la bibliothèque de script jquery peur être un véritable goulot d'étranglement lors du chargement de vos pages, pour ma part son poids est quatre fois plus important que mes pages html. Il est nécessaire d'optimiser son chargement.

1) La solution de facilité le linker depuis chez google

Google propose un CDN(Content Delivery Network) qui permet d'externaliser certaines ressources, principalement des bibliothèques de scripts, jquery en faisant partie, pourquoi se priver?
Rendez vous sur Google Hosted Libraries - Developer's Guide, puis coller copier le code juste avant votre balise </body>

L'avantage de cette méthode est que le fichier sera déjà gzipé par google. Il pèse 34.5Ko contre 93.5Ko sans compression.
Cette méthode m'a fait gagner 8 points sur Google PageSpeed Insights.
Apparemment d'après les outils de développement de chrome le fichier est mis en cache, what's else ?

2) Mettre en cache jquery via les PHP header.

Une autre astuce consiste à mettre en cache le fichier jquery via les header de PHP. Vous devrez créer un fichier PHP avec le code qui suit. Puis insérer le Javascript tel quel entre les balises PHP. Le fichier pèse 94Ko, mais ne sera chargé qu'une fois sa date d'expiration est de 1 an.

  1. <?php// compress JS
  2. header("content-type: text/javascript; charset: UTF-8");
  3. header("cache-control: must-revalidate");
  4. $offset=365*24*60*60;// 1an
  5. $expire="expires: ".gmdate("D, d M Y H:i:s", time()+$offset)." GMT";
  6. header($expire);
  7. if(!ob_start("ob_gzhandler")) ob_start();
  8. ?>
  9. // ici le jquery minifié
  10. !function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0) ...
  11. <?php ob_flush();?>

En conclusion:

Pour ma part, j'ai définitivement opté pour la solution de chez google, car je n'ai pas de compression chez numéricable ce qui est un sérieux handicap pour les fichiers tels que jquery. De plus, Google a eu la bonne idée de mettre le fichier en cache. Que demander de plus ?