Nous extrayons actuellement les bibliothèques jQuery et jQueryUI (et jQueryUI CSS) du google CDN. J'aime ça parce que je peux appeler google.load("jquery", "1");
et la dernière jQuery 1.x.x seront utilisées.
Maintenant, je dois tirer les bibliothèques localement pour des raisons de sécurité.
Je suis heureux de les retirer localement, mais je me demande quels sont les autres avantages et pièges à surveiller?
Le principal avantage de les avoir sur un CDN est que les fichiers peuvent être téléchargés en parallèle aux fichiers téléchargés à partir de votre propre site Web. Cela réduit la latence sur chaque page. Donc, le revers de la médaille est un piège de l'hébergement local - latence accrue. La raison principale en est que les navigateurs sont limités dans le nombre de connexions qu'ils peuvent établir en même temps avec le même domaine Web. Dans IE6, cela a été défini par défaut sur 2 connexions simultanées au même domaine - partagé entre toutes les fenêtres ouvertes d'IE !! Dans IE8 +, il s'est amélioré, par défaut à 6, qui est en ligne avec FF/Chrome, mais quand même, si vous avez beaucoup d'images et que vous n'utilisez pas de sprites, vous subirez une latence importante.
En utilisant un CDN, je voudrais toujours définir explicitement la version de la bibliothèque plutôt que d'obtenir la dernière. Cela réduit le risque que de nouvelles versions cassent votre code. Peu probable avec jQuery, mais possible.
L'autre avantage principal de l'utilisation d'un CDN est trafic réduit sur votre site. Si vous payez par Go ou si vous êtes sur un serveur virtuel avec des ressources limitées, vous constaterez peut-être que les performances globales du site augmentent et que les coûts d'hébergement diminuent lorsque vous transférez une partie de votre contenu vers un CDN public.
Assurez-vous de lire également l'autre réponse à cette question par @Xaver. C'est une très bonne astuce
J'utilise toujours le CDN (Content Delivery Network) de Google. Mais juste au cas où il serait hors ligne:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script>!window.jQuery && document.write('<script src="jquery-1.4.2.min.js"><\/script>')</script>
Récupérez jQuery de Google CDN et passez au local si nécessaire
Modifier : Si vous n'avez pas besoin de prendre en charge IE6 et que votre site utilise partiellement https, vous pouvez également supprimer le http:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
D'autres ont couvert les avantages. Pièges:
Si vous incluez uniquement le contenu de votre propre serveur, c'est un serveur qui doit être en cours d'exécution - et non bloqué par des pare-feu, etc. - pour faire fonctionner votre site. Tirez le script d'un tiers et maintenant ce sont deux serveurs qui doivent être exécutés et débloqués pour faire fonctionner votre site.
Tout site que vous tirez <script>
from peut contrôler complètement l'expérience de l'utilisateur sur votre site. Si Google se sentait mal, il pourrait mettre quelque chose dans sa copie de jQuery pour enregistrer vos frappes au clavier, voler des informations personnelles sur la page sur laquelle vous vous connectez à sa base de données de suivi Web, vous faire publier des commentaires "J'aime Google!" Dans chaque formulaire , etc.
Google ne le fera probablement pas, mais c'est un facteur hors de votre contrôle, et certainement quelque chose à craindre avec d'autres services d'hébergement de scripts. Il y a eu des incidents auparavant où les scripts de statistiques ont été compromis avec des chargeurs de logiciels malveillants.
Avant d'inclure un script d'un tiers, même sur une seule page de votre site, vous devez leur faire confiance à 100% avec toutes les fonctionnalités accessibles à l'utilisateur visibles sur ce nom d'hôte (y compris les fonctions d'administration Web).
Google CDN:
Localement:
Je préfère utiliser ma version locale, car je n'ai aucun contrôle sur ce qu'ils fourniront. Par exemple, je ne veux pas que mes utilisateurs soient affectés par Google Analytics ou quelque chose de similaire, car il s'agit d'un problème juridique dans mon pays.
Avantages: (spécifiquement pour le CDN de Google)
Pratiquement dans tous les sens, utiliser le CDN de Google est une bonne chose.
Les performances seront améliorées (quoique de façon assez marginale, à moins que votre site ne soit vraiment occupé), et la quantité de données que vos serveurs doivent transmettre diminuera (bien que jQuery ne soit pas vraiment une chose énorme à télécharger), etc.
La seule raison pour laquelle vous ne voudriez pas l'utiliser, c'est si vous ne faites pas confiance à Google. En l'utilisant, vous donnez effectivement à Google une fenêtre supplémentaire d'informations sur le profil de trafic de votre site, y compris la connaissance des URL que vous ne voudriez pas autrement rendre publiques (par exemple, les zones sécurisées de votre site).
Si vous êtes paranoïaque à propos de la sécurité, cela peut suffire à vous persuader de ne pas les utiliser (après tout, l'héberger vous-même ne va pas exactement ralentir votre site à une exploration), mais en général, la plupart des gens adopteraient un point de vue pragmatique que Google en sait déjà assez sur leur site, que l'ajout de cela ne fera pas beaucoup de différence.
Je suis probablement en minorité de nos jours, mais je dirais que vous ne voulez pas utiliser CDN sauf si vous en avez vraiment besoin. Les facteurs clés pour commencer à l'utiliser sont:
Mais ... le fait est que ces points ne sont pas vraiment applicables à 90% des sites Web dans le monde. Je parie que vous n'êtes pas Facebook avec des millions d'utilisateurs en ligne dans le monde, vous n'êtes pas Pornhub avec des centaines de Go transférés chaque seconde.
Si votre site Web est destiné aux utilisateurs de votre ville/pays et que la capacité d'un serveur est suffisante pour le nombre d'utilisateurs que vous avez - pourquoi voudriez-vous un CDN? C'est plus rapide pour vos utilisateurs dans votre ville et plus simple pour vous de tout récupérer sur votre serveur principal localement.
Il s'agissait plus des CDN en général, permettez-moi maintenant d'être plus proche de la question réelle sur jQuery ou toute autre bibliothèque.
Si vous voulez que votre site Web reste accessible et fonctionne sans maintenance pendant plus d'un an, disons - mettez-le localement. De nos jours, les bibliothèques sont mises à jour dans un rythme fou que vous ne voulez probablement pas suivre. Et les anciennes versions sont finalement supprimées. De plus, toute la bibliothèque peut mourir (probablement pas applicable à jQuery cependant).
D'après mon expérience récente - j'ai mis à jour TinyMCE sur le site Web que je gère de 3.x.x (daté de 2012) à 5.x.x (daté de printemps 2019). Ce site fonctionnait depuis 7 (sept!) Ans sans aucune maintenance dans cette partie de la logique. Il n'y avait pas de concept de "minification" à l'époque et les CDN n'étaient pas aussi courants qu'aujourd'hui. Mais même si elles étaient courantes - vous ne savez jamais ce qui se passera dans 3 à 10 ans. Habituellement, vous voulez que votre site Web reste en vie même sans que vous le mainteniez, n'est-ce pas? Cependant, si vous extrayez jQuery de CDN aujourd'hui, alors ce lien peut (et, probablement) se rompra dans 5 ans.
La solution avec CDN ET repli sur la version locale comme l'a suggéré @Xaver peut être un bon compromis. Mais ... peut-être simplement vous débarrasser du lien CDN? ;)
Pour moi, cela dépend vraiment du degré de contrôle que vous désirez avoir. Si vous êtes comme moi et que vous devez vous développer sur l'hôte local lorsque vous travaillez et voyagez. Il est préférable d'avoir les fichiers jquery locaux que de les héberger sur Google ou ailleurs.