web-dev-qa-db-fra.com

Avantages et. Pièges de l'hébergement de jQuery localement

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?

76
orolo

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

100
Daniel Dyson

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>
137
Xaver

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).

20
bobince

Google CDN:

  • mise en cache, bon pour les performances, plus d'utilisateurs susceptibles de l'avoir déjà, et il se télécharge en parallèle
  • si jamais, par-dessus tout, interdire que le cdn baisse. t'es foutu.
  • si une nouvelle version casse vos plugins ou votre site existants, vous le saurez peut-être trop tard

Localement:

  • développement sans être connecté au net est possible
  • peut encore obtenir des avantages en termes de performances par gzipping, en plus de réduire
13
Moin Zaman

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.

11
Dr.Molle

Avantages: (spécifiquement pour le CDN de Google)

  1. Téléchargements en parallèle avec vos fichiers. D'autres réponses répondent à cette question
  2. Les serveurs de Google sont susceptibles de fournir physiquement le contenu plus rapidement
  3. Les bibliothèques et les cadres communs peuvent déjà être sur la machine de l'utilisateur, car le cache HTTP pour un CDN est niversel sur tous les sites
  4. Votre bande passante ne devrait pas être utilisée pour servir de gros fichiers de bibliothèque
8
Praveen Prasad

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.

3
Spudley

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:

  • Utilisateurs croisés. Si vous hébergez votre site Web aux États-Unis mais que vous avez un nombre visible d'utilisateurs européens - CDN améliorera le temps de chargement.
  • Grande quantité d'utilisateurs et/ou gros contenu, donc un seul serveur principal ne suffit plus. On peut penser à n'importe quel site de porno-vidéo (ou Netflix, si vous voulez). Le flux vidéo est une lourde charge, avec CDN serait beaucoup moins de charge sur le serveur principal.

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? ;)

1
The Godfather

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.

0
WebGoonie