Disons que j'ai un fichier JavaScript assez volumineux, compressé à environ 100 Ko environ. Par fichier, je veux dire que c'est un fichier externe qui serait lié via <script src="...">
, non collé dans le HTML lui-même.
Quel est le meilleur endroit pour mettre cela dans le HTML?
<html>
<head>
<!-- here? -->
<link rel="stylesheet" href="stylez.css" type="text/css" />
<!-- here? -->
</head>
<body>
<!-- here? -->
<p>All the page content ...</p>
<!-- or here? -->
</body>
</html>
Y aura-t-il une différence fonctionnelle entre chacune des options?
javascript
html
optimization
nickf
la source
la source
Réponses:
Yahoo! L'équipe Performance exceptionnelle recommande de placer des scripts en bas de votre page en raison de la façon dont les navigateurs téléchargent les composants.
Bien sûr, le commentaire de Levi "juste avant d'en avoir besoin et pas plus tôt" est vraiment la bonne réponse, c'est-à-dire "cela dépend".
la source
$(function () {...})
au bas de la page, ou doit-il être à l'intérieur<head>
?</body>
- delà ?Le meilleur endroit pour cela est juste avant d'en avoir besoin et pas plus tôt.
De plus, selon l'emplacement physique de vos utilisateurs, l'utilisation d'un service comme le service S3 d'Amazon peut aider les utilisateurs à le télécharger à partir d'un serveur physiquement plus proche d'eux que votre serveur.
Votre script js est-il une bibliothèque couramment utilisée comme jQuery ou prototype? Si c'est le cas, il existe un certain nombre d'entreprises, comme Google et Yahoo, qui ont des outils pour vous fournir ces fichiers sur un réseau distribué.
la source
En règle générale, le meilleur endroit pour mettre des
<script>
balises est le bas de la page, juste avant la</body>
balise. Quelque chose comme ça:Pourquoi?
CSS
Un peu hors sujet, mais ... Mettez les feuilles de style en haut.
Lectures complémentaires
Yahoo a publié un guide vraiment cool qui répertorie les meilleures pratiques pour accélérer un site Web. Vaut vraiment la peine d'être lu: https://developer.yahoo.com/performance/rules.html
la source
Avec 100k de Javascript, vous ne devriez jamais le mettre dans le fichier. Utilisez un fichier Javascript de script externe. Il n'y a aucune chance que vous n'utilisiez cette quantité de code que dans une seule page HTML. Vous vous demandez probablement où vous devez charger le fichier Javascript, pour cela vous avez déjà reçu des réponses satisfaisantes.
Mais je voudrais souligner que les navigateurs modernes acceptent généralement les fichiers Javascript gzip ped! Gzipez le
x.js
fichierx.js.gz
et pointez-le dans l'src
attribut. Cela ne fonctionne pas sur le système de fichiers local, vous avez besoin d'un serveur Web pour que cela fonctionne. Mais les économies en octets transférés peuvent être énormes.Je l'ai testé avec succès dans Firefox 3, MSIE 7, Opera 9 et Google Chrome. Cela ne fonctionne apparemment pas de cette façon dans Safari 3.
Pour plus d'informations, consultez cet article de blog et une autre page très ancienne qui est néanmoins utile car elle indique que le serveur Web peut détecter si un navigateur peut accepter Javascript Javascript compressé ou non. Si votre serveur peut choisir dynamiquement d'envoyer le texte compressé ou le texte brut, vous pouvez rendre la page utilisable dans tous les navigateurs Web.
la source
Mettre le javascript en haut semblerait plus net, mais fonctionnellement, il vaut mieux aller après le HTML. De cette façon, votre javascript ne fonctionnera pas et n'essaiera pas de référencer les éléments HTML avant qu'ils ne soient chargés. Ce type de problème n'apparaît souvent que lorsque vous chargez la page via une connexion Internet réelle, en particulier une connexion lente.
Vous pouvez également essayer de charger dynamiquement le javascript en ajoutant un élément d'en-tête à partir d'un autre code javascript, bien que cela n'a de sens que si vous n'utilisez pas tout le code tout le temps.
la source
En utilisant cuzillion, vous pouvez tester l'effet sur le chargement de page de différents emplacements de balises de script en utilisant différentes méthodes: en ligne, externe, "balises HTML", "document.write", "élément JS DOM", "iframe" et "XHR eval" . Voir l' aide pour une explication des différences. Il peut également tester des feuilles de style, des images et des iframes.
la source
La réponse est dépend de la façon dont vous utilisez les objets de javascript. Comme indiqué précédemment, le chargement des fichiers javascript au pied de page plutôt qu'en-tête améliore certainement les performances, mais il faut veiller à ce que les objets utilisés soient initialisés plus tard qu'ils ne sont chargés au pied de page. Une autre façon consiste à charger les fichiers «js» placés dans un dossier qui sera disponible pour tous les fichiers.
la source
Comme d'autres l'ont dit, il devrait très probablement être placé dans un fichier externe. Je préfère inclure ces fichiers à la fin de <head />. Cette méthode est plus conviviale pour les humains que pour les machines, mais de cette façon, je sais toujours où se trouve le JS. Il n'est tout simplement pas aussi lisible d'inclure des fichiers de script ailleurs (à mon humble avis).
Si vous avez vraiment besoin d'extraire toutes les dernières ms, vous devriez probablement faire ce que Yahoo dit.
la source
Les scripts doivent être inclus à la fin de la balise body car de cette façon, le code HTML sera analysé par le navigateur et affiché avant le chargement des scripts.
la source
La réponse à la question dépend. Il y a 2 scénarios dans cette situation et vous devrez faire un choix en fonction de votre scénario approprié.
Scénario 1 - Script critique / Script nécessaire
Dans le cas où le script que vous utilisez est important pour charger le site Web, il est recommandé de le placer en haut de votre document HTML, c'est-à-dire
<head>
. Quelques exemples: code d'application, bootstrap, polices, etc.Scénario 2 - Scripts moins importants / analytiques
Il existe également des scripts utilisés qui n'affectent pas la vue du site Web. Il est recommandé de charger ces scripts après le chargement de tous les segments importants. Et la réponse à cela sera en bas du document, c'est-à-dire en bas de votre
<body>
avant la balise de fermeture. Certains exemples incluent - Google Analytics, Hotjar, etc.Bonus - async / différé
Vous pouvez également indiquer aux navigateurs que le chargement du script peut être effectué simultanément avec d'autres et peut être chargé en fonction du choix du navigateur en utilisant un argument defer / async dans le code du script.
par exemple.
<script async src="script.js"></script>
la source
Vos liens javascript peuvent se trouver soit dans la tête soit à la fin de la balise body, il est vrai que les performances s'améliorent en mettant le lien à la fin de votre balise body, mais à moins que les performances ne soient un problème, les placer dans la tête est plus agréable pour que les gens lisent et vous savez où se trouvent les liens et pouvez les référencer plus facilement.
la source
Je dirais que cela dépend en fait de ce que vous envisagez de réaliser avec du code Javascript:
la source
document.write
, ce que vous ne devriez probablement pas être.