Disons que j'ai une application Web qui utilise jQuery. Est-il préférable d'héberger les fichiers javascript nécessaires sur mes propres serveurs avec les fichiers de mon site Web, ou de les référencer sur le CDN de jQuery (exemple: http://code.jquery.com/jquery-1.7.1. min.js )?
Je peux voir des pros des deux côtés:
Commencez par l'hébergement à partir d'un CDN tel que Google's car il aura probablement un temps de mise à jour plus élevé que votre propre site et sera configuré pour le temps de réponse le plus rapide. De plus, toute personne ayant visité une page qui renvoie au CDN utilisera sa copie en cache du fichier, de sorte qu'elle n'aura même pas à télécharger à nouveau une copie, ce qui accélérera le chargement initial.
Ajoutez ensuite une référence de secours à votre propre serveur au cas où le CDN serait en panne (peu probable, mais sûr est sûr). Les solutions de repli sont relativement faciles à comprendre, mais doivent être personnalisées en fonction du script utilisé:
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.18/jquery-ui.min.js"></script>
<script>
if (!window.jQuery) document.write('<script src="/path/to/jquery-ver.sion.min.js"><\/script>');
</script>
Assurez-vous de ne pas écrire </script>
n'importe où dans un <script>
élément, car il fermera l'élément HTML et entraînera l'échec du script. La solution simple consiste à utiliser une barre oblique inversée comme échappement: <\/script>
.
Une raison de plus pour faire les deux:
Si vous choisissez un CDN populaire, il est très peu probable qu'il ait un temps d'arrêt, mais dans un avenir lointain lointain (~ 18 mois à partir de maintenant étant donné loi de Moore ) lorsque le format d'hébergement change, ou que l'adresse est ajustée, ou que le réseau est placé derrière un mur payant, ou autre chose, il est possible que votre lien ne fonctionne plus tel quel. Si vous utilisez une solution de rechange, cela vous donnera un peu de temps pour vous adapter à tout nouveau format d'hébergement avant d'avoir à parcourir tous les sites Web que vous avez créés et à modifier les liens CDN.
une autre raison de faire les deux:
Récemment, j'ai été frappé par une série de pannes Internet. J'ai pu continuer à travailler localement sur des projets où j'avais lié des copies locales des ressources de script, et j'ai rapidement constaté qu'il y avait un certain nombre de projets qui devaient avoir des copies locales liées.
J'ai eu la même question, puis j'ai lu cet article et j'ai été vendu à l'idée de laisser Google Host ma bibliothèque jQuery.
L'article indique les principaux avantages de permettre à vos bibliothèques d'être hébergées par le Content Delivery Network (CDN) de Google:
En ce qui concerne les deux puces que vous avez répertoriées en tant que pros pour l'hébergement de votre propre bibliothèque, n'oubliez pas que c'est Google qui héberge la version cloud, et Google sait ce qu'ils font et peut faire confiance en termes de disponibilité et de sécurité. Cependant, @zzzzBov fait un très bon point dans sa réponse à cette question, où il recommande également de stocker une copie locale de la bibliothèque et de le faire par défaut dans le cas peu probable où la version CDN ne serait pas accessible pour une raison quelconque.
Personnellement, je m'inspire de http://html5boilerplate.com/
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script>!window.jQuery && document.write(unescape('%3Cscript src="includes/js/libs/jquery-1.6.1.min.js"%3E%3C/script%3E'))</script>
Cela extrait le fichier jQuery principal de Google, mais s'il ne se charge pas pour une raison quelconque, la ligne suivante le charge à partir de votre propre serveur.
Il est préférable d'utiliser un CDN, et si ce CDN se trouve être Google, tant mieux - comme l'ont noté @CFL_Jeff et @Morons.
J'ajoute cette réponse pour souligner quelque chose qui passe souvent inaperçu lorsque l'on pointe ailleurs, ce qui évite l'avertissement de contenu mixte . Envisagez d'utiliser des URL sans protocole, par exemple:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js" type="text/javascript">
</script>
Il y a encore quelques problèmes de support dans l'utilisation d'URL sans protocole, alors jetez un coup d'œil aux réponses sur Puis-je changer tous mes liens http: // en seulement //? sur SO, mais faites à essayez au moins de gérer les avertissements potentiels de contenu mixte de la manière certains.
Vous devez le référencer à Bibliothèque d'API de Google ..
La principale raison à cela est d'accélérer le chargement de vos pages . Si votre utilisateur a déjà visité un autre site référençant la même bibliothèque, il sera déjà stocké dans le cache des navigateurs et il n'aura pas du tout besoin d'être téléchargé.
Je peux me tromper, mais l'implémentation de document.write écrase tout ce que le DOM a. Comme il est recommandé de placer les fichiers JavaScript à la fin du corps,
Je propose la méthode suivante basée sur les réponses précédentes:
<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript">
if(!window.jQuery)
{
//Creates the script element
var script = document.createElement('script');
//Adds the type attribute with "text/javascript" value
script.setAttribute('type', 'text/javascript');
//Adds the source attribute and populates it
script.setAttribute('src', 'Put_The_Relative_Path_To_Your_JavaScript_File_Here');
//Adds it to the end of the body, as it is good practice, to prevent render-blocking.
document.body.appendChild(script);
}
//Note that there's no need for you to verify with an onload function, since all scripts
//must be loaded before going to the next one!
</script>
Je voudrais ajouter qu'héberger une copie locale est une meilleure pratique car rien de ce qui précède n'indique quoi que ce soit lié à une posture sécurisée par laquelle la géolocalisation et la liste blanche stricte sont impératives. Ne pas héberger ce fichier localement suppose de pousser une position de sécurité réduite sur vos clients.