Mon site Web utilise environ 10 bibliothèques javascript tierces comme jQuery, jQuery UI, prefixfree, quelques plugins jQuery et aussi mon propre code javascript. Actuellement, je tire les bibliothèques externes des CDN comme Google CDN et cloudflare. Je me demandais quelle était la meilleure approche:
Toutes les opinions sont les bienvenues tant qu'elles sont expliquées. Merci :)
La valeur d'un CDN réside dans la probabilité que l'utilisateur ait déjà visité un autre site appelant ce même fichier à partir de ce CDN, et devient de plus en plus précieuse en fonction de la taille du fichier. La probabilité que cela soit le cas augmente avec l'omniprésence du fichier demandé et la popularité du CDN.
Dans cet esprit, extraire un fichier relativement volumineux et populaire d'un CDN populaire est tout à fait logique. jQuery et, dans une moindre mesure, jQuery UI, correspondent à ce projet de loi.
Pendant ce temps, la concaténation de fichiers a du sens pour les fichiers plus petits qui ne changeront probablement pas beaucoup - vos plugins couramment utilisés conviendront à cette facture, mais votre code spécifique à l'application de base ne le sera probablement pas: il pourrait changer de semaine en semaine, et si vous '' en le concaténant avec tous vos autres fichiers, vous devrez obliger l'utilisateur à tout télécharger à nouveau.
Le passe-partout HTML5 fait un très bon travail en fournissant une solution générique pour cela:
plugins.js
fichier chargé depuis votre propre serveur. Cela sera mis en cache avec un en-tête d'expiration distant lors de la première visite de l'utilisateur et chargé à partir du cache lors des visites suivantes.main.js
, avec un en-tête d'expiration plus proche pour tenir compte du fait que la logique de votre application peut changer d'une semaine à l'autre ou d'un mois à l'autre. De cette façon, lorsque vous avez corrigé un bogue ou introduit de nouvelles fonctionnalités lorsque l'utilisateur visite dans quinze jours, cela peut être chargé à nouveau tandis que tout le contenu ci-dessus peut être importé du cache.Pour vos autres bibliothèques principales, vous devriez les regarder individuellement et vous demander si elles doivent suivre l'exemple de jQuery, être chargées individuellement à partir de votre propre serveur ou être concaténées. Un exemple de la façon dont vous pourriez prendre ces décisions:
plugins.js
. De cette façon, vous pouvez toujours mettre à jour votre plugins.js
avec les extensions Bootstrap sans forcer l'utilisateur à télécharger la totalité du Bootstrap core.Mais il n'y a aucun impératif - votre kilométrage peut varier.