Les modules complémentaires YSlow et Page Speed de Google recommandent de combiner les fichiers de script (et de style) en un seul fichier chacun pour réduire le nombre de demandes HTTP, et je peux certainement voir l'intérêt de cela lorsque les fichiers de script sont cohérents sur l'ensemble du site, mais pour une application Web qui a des exigences différentes sur le site.
La façon dont je le vois, il y a quelques options:
Combinez tous les fichiers utilisés sur le site, et chaque page obtient le même fichier combiné - l'inconvénient est le contenu inutilisé qui encombre le script (et un premier chargement plus lourd (également rechargé lorsque tout script de composant change))
Combinez les fichiers par page - l'inconvénient est que chaque page avec des exigences différentes obtient un fichier combiné différent (premier chargement plus lourd pour chaque type de page)
Ignorez l'interprétation stricte `` un seul fichier '' des recommandations et chargez la page dans plusieurs fichiers, le cas échéant, la mise en cache annule, espérons-le, le nombre de demandes HTTP dans le cas général - l'inconvénient est le nombre de demandes HTTP sur chaque page
Pensées?
la source
Réponses:
L'option 2 est la pire; cela signifie que chaque page avec une combinaison différente de scripts JS nécessaires entraînera une demande HTTP. Cela rendra les performances bien pire.
L'option 1 est la meilleure. Finalement, la plupart des utilisateurs visiteront la plupart des "types" de page de votre site Web, il est donc toujours avantageux de tout combiner en un seul fichier, à l'exception peut-être des gros fichiers JS qui sont nécessaires dans quelques pages rarement visitées.
Le premier accès à la page peut être plus lent qu'avec différents fichiers, mais cela vaut toujours la peine, car tous les autres accès à la page utiliseront le JS global mis en cache.
Un conseil cependant; fusionnez-les automatiquement si vous ne l'êtes pas déjà!
la source
Je combine généralement le «Javascript global» - jQuery et les plugins communs - dans un seul fichier, puis je propose des plugins supplémentaires en tant que fichiers séparés lorsque cela est nécessaire.
Par exemple, un site sur
global.js
lequel je gère de nombreuses pages contient des tableaux de données, j'ai donc un avec jQuery, DataTables et SuperFish (pour mon menu). Il y a deux pages sur le site qui utilisent une "lightbox" donc j'ai un script séparé pour ces deux pages.Pour CSS, je ne sers qu'un seul fichier pour l'ensemble du site et j'essaie de rendre le CSS aussi général que possible - la plupart des pages n'ont que quelques éléments CSS uniques.
la source
Bien qu'il soit certainement recommandé d'utiliser le moins de fichiers possible, vous pouvez constater que vous avez un partage entre les fonctionnalités requises au chargement de la page et les fonctionnalités qui peuvent être différées via un chargement asynchrone.
Si suffisamment de votre JS peut être poussé dans la deuxième catégorie, vous pouvez améliorer la vitesse de chargement initiale perçue de la page, créant une meilleure expérience pour vos utilisateurs.
la source
Je ne suggérerais pas de les combiner tous. Si vous utilisez une bibliothèque commune, vous pouvez utiliser un CDN pour livrer vos javascripts. Vous pouvez ensuite profiter de la mise en cache du navigateur (en supposant que d'autres sites utilisent le même CDN) et de la distribution distribuée. Microsoft et Google ont chacun des solutions (que je n'ai pas utilisées honnêtement non plus, mais je vais certainement commencer) et il peut y en avoir d'autres. Sur une note connexe, SO a cette question:
et la première réponse est l'or massif.
la source