J'ai lu quelques articles en ligne sur l'optimisation du chargement javascript. Quelques points clés que j'ai obtenus est de minimiser le nombre de fichiers de script (requêtes http), de minify et d'activer gzip sur le serveur. Actuellement, ce qui est fait de mon côté, c'est que tous les fichiers javascript sont minifiés, et gzip peut être simplement activé.
Partie 1)
Mon problème est que j'ai environ 20 fichiers javascript, il y a un common.js qui a toutes les fonctions principales. En plus, chaque page chargerait au moins un autre fichier qui implémente la fonctionnalité de cette page.
La solution 1 consiste à combiner tous les scripts dans un grand fichier de script et à être chargé une fois pour chaque client, ce qui semble être ce que tout le monde fait. Je suppose que YUI ou JSMin peut être utilisé pour la compression, alors je devrais combiner les fichiers manuellement?
Solution 2, chargement par défaut lorsqu'une fonction requise est nécessaire, je ne sais pas vraiment comment cela fonctionne, mais cela semble être un moyen de le faire, mais nécessite encore plus de requêtes HTTP. J'aimerais entendre des contributions pour cela.
Partie 2)
L'application Web sur laquelle je travaillerais sera déployée sur de nombreux autres ordinateurs, car les javascripts sont assez petits, est-ce une bonne pratique de créer un script qui charge dynamiquement le script le plus récent d'un serveur central, afin que chaque client exécute le script le plus récent ?
Partie 1: Comme vous l'avez dit, il y a deux approches.
Partie 2:
Les meilleures pratiques générales sont considérées comme
Fusionner dans autant de fichiers que possible
Minify
Servir gzipé
Servir le plus tard possible (certains peuvent être dans la tête, mais généralement avant ou de manière asynchrone est préféré
Ceci est un conseil général, vous devez le faire et tester pour vous assurer qu'il est juste pour votre cas.
La minimisation des requêtes HTTP est importante, la latence est un tueur de performance …
Vous devez diviser l'optimisation en plusieurs étapes
<script src='//...' async defer>
si possible, si vous avez des dépendances de script, faites attention lorsque vous utilisez Asycn loading. Si vous utilisez le module AMD, cela vous assurera que vos modules dépendants sont chargés à l'avance, et ils ne chargent qu'une fois par page de rafraîchissement.