Pourquoi devrais-je utiliser le CDN de Google pour jQuery?

169

Cela peut être évident pour certains, mais je me suis demandé: pourquoi devrais-je dépendre du serveur de Google pour héberger jQuery pour mon site?

Est-ce uniquement parce qu'il se charge plus rapidement de cette façon?

Yvette
la source
1
En relation: stackoverflow.com/questions/547384/…
Jørn Schou-Rode
2
Personne ne mentionne la politique de Google en matière de liaison directe avec leurs fichiers JS (étant donné que la liaison directe est généralement mal vue), voici donc l'URL où Google mentionne que c'est OK et plus sur les bibliothèques qu'ils hébergent: code.google.com/apis/ajaxlibs/ documentation / index.html
Loftx
1
De nombreux utilisateurs ont déjà téléchargé jQuery depuis Google ou Microsoft lors de la visite d'un autre site. En conséquence, il sera chargé à partir du cache lorsqu'ils visiteront votre site, ce qui accélérera le temps de chargement
AminM
Vous ne devez pas utiliser Microsoft ou Google. Utilisez MaxCDN. Beaucoup plus de chances d'obtenir un coup de cache, ce qui est la chose la plus importante ici blog.jquery.com/2014/01/14
...

Réponses:

393

Ceci est dû au fait:

  1. Cela augmente le parallélisme disponible.
    (La plupart des navigateurs ne téléchargeront que 3 ou 4 fichiers à la fois à partir d'un site donné.)

  2. Cela augmente les chances qu'il y ait un coup de cache.
    (À mesure que de plus en plus de sites suivent cette pratique, plus d'utilisateurs ont déjà le fichier prêt.)

  3. Cela garantit que la charge utile sera aussi petite que possible.
    (Google peut pré-compresser le fichier dans un large éventail de formats (comme GZIP ou DEFLATE). Cela rend le temps de téléchargement très court, car il est super compressé et il n'est pas compressé à la volée.)

  4. Cela réduit la quantité de bande passante utilisée par votre serveur.
    (Google propose essentiellement une bande passante gratuite.)

  5. Il garantit que l'utilisateur obtiendra une réponse géographiquement proche.
    (Google a des serveurs partout dans le monde, ce qui réduit encore la latence.)

  6. (Facultatif) Ils garderont automatiquement vos scripts à jour.
    (Si vous aimez "voler près du siège de votre pantalon", vous pouvez toujours utiliser la dernière version de n'importe quel script proposé. Ceux-ci pourraient corriger les failles de sécurité, mais en général, tout simplement casser vos affaires.)
John Gietzen
la source
10
J'adore la façon dont vous trouvez de plus en plus de raisons +1 pour cela seul.
Matchu
6. Les serveurs Google sont probablement plus rapides que les vôtres! Je ne suis pas sûr que le point 3 soit vraiment pertinent car n'importe qui peut aussi bien minifier que Google. +1 pour une bonne réponse :)
Paul Creasey
1
J'ai l'impression que le n ° 3 a probablement plus à voir avec gzip et autres, car jQuery donne déjà une version minifiée.
Matchu
2
Dieu que tout le monde m'attaquait, je viens d'envoyer mes idées et j'ai été accepté, LOL
Farshad
1
@farshad: Ne pas vous attaquer, attaquer la réponse acceptée qui n'était pas aussi bonne que la réponse suivante. C'est ainsi que fonctionnent les questions et réponses de la communauté. Essayez de mettre en forme votre réponse de manière un peu plus professionnelle la prochaine fois, et limitez votre critique de la question au type utile et constructif.
Joel
58

Il existe plusieurs scénarios dans lesquels vous ne voudrez peut- être pas utiliser jQuery à partir du CDN de Google:

  1. Lorsque vous créez une application intranet dans laquelle le serveur Web est hébergé sur le même réseau que les clients. Si vous utilisez le CDN jQuery de Google, vous effectuerez un appel vers Internet plutôt que vers un serveur Web sur le réseau local. Cela augmente la bande passante de votre organisation et est plus lent.

  2. Lorsque vous souhaitez exécuter votre application hors ligne . (Tout à fait lié au premier numéro) Si vous avez besoin de travailler sur un environnement de développement (géré par exemple avec Bower ), vous devrez peut-être pouvoir faire fonctionner votre application sans aucune connexion Internet (c'est-à-dire: dans un train :)

  3. Lorsque vous avez besoin de le personnaliser . Par exemple, si vous utilisez Grunt pour construire la bibliothèque afin de n'utiliser que certains modules ou définir le nom AMD

  4. Lorsque vous diffusez des pages via SSL qui nécessitent jQuery. Vous devez servir le JavaScript sur SSL ainsi que votre page pour éviter les problèmes de sécurité et les avertissements.

De plus, Microsoft héberge jQuery sur leur CDN. C'est un autre choix comparable à l'utilisation de jQuery hébergé par Google.

Lance Fisher
la source
35
Juste un FYI que vous pouvez utiliser les serveurs de Google pour servir une version SSL des bibliothèques javascript hébergées. ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js fonctionne.
Aaron Wagner
Bon à savoir, Aaron. Merci.
Lance Fisher
3
+1 pour avoir mentionné Microsoft. Google obtient beaucoup trop de crédit imo.
Oui Barry
7
Aussi FYI: les hyperliens relatifs au schéma, comme src="//ajax.googleapis.com/...", fonctionnent.
John Gietzen
3
Et considérez aussi cndjs
Bryce
29

Cette étude de TJ VanToll m'a convaincu qu'il est préférable de concaténer jQuery avec d'autres scripts plutôt que de le charger à partir d'un CDN.

La raison est la latence impliquée dans la récupération de jQuery sur les appareils mobiles:

«En 2012, le temps RTT moyen sur un réseau mobile aux États-Unis était de 344 ms. Et ces 344 ms s'appliquent non seulement à toutes les requêtes HTTP - dont la page Web moyenne en fait désormais 93 - mais également à chaque recherche DNS et connexion TCP ... Alors que les RTT moyens s'améliorent, il n'y a que de petits gains supplémentaires à réaliser, car les réseaux actuels se situent dans un petit facteur de la limite théorique dictée par la physique. "

Il cite également cet article de Steve Souders qui montre pourquoi il est peu probable que vous tiriez parti de la mise en cache en utilisant un CDN:

"En raison de la fragmentation des fournisseurs de CDN, des versions de jQuery et de l'utilisation du protocole (http vs https), les chances d'obtenir un hit de cache CDN sont extrêmement faibles - et le téléchargement à partir d'un domaine externe a le potentiel d'exécuter non pas un, mais trois aller-retour (une recherche DNS, une connexion TCP et un HTTP GET). "

cantera
la source
3
Ce n'est plus vrai pour HTTP2 et SPDY. Aujourd'hui, vous pouvez héberger toutes vos ressources externes dans un CDN comme Cdnjs.com ou quelque chose et tous les fichiers seront téléchargés en utilisant la même demande. C'est fondamentalement la même chose que concaténer.
Ricardo Polo Jaramillo le
13

Le plus grand avantage est la mise en cache. La théorie est que si un visiteur visitait un site qui chargeait ses bibliothèques JavaScript, disons jQuery par exemple à partir du CDN de Google, alors lorsqu'il visite votre site Web, la bibliothèque est déjà dans le cache du navigateur de cet utilisateur et n'aura pas à être téléchargée à nouveau. . Cela sonne bien en théorie.

Les bénéfices partagés ici et ailleurs sont tous théoriques. Je viens de tomber sur une analyse approfondie de l'utilisation d'un CDN et s'il offre les avantages attendus en termes de performances. http://www.root777.com/appdev/does-using-google-libraries-api-cdn-give-you-performance-benefits

Matt Moor
la source
Cette réponse est largement sous-estimée. Il fournit les «inconvénients» tout aussi valables à la réponse acceptée «pour» ci-dessus.
Thomas Wana
@ user239558 Le lien ne serait pas mort si l'auteur de l'étude avait effectivement utilisé un CDN ;-) L'erreur est: [function.require]: échec de l'ouverture du flux: aucun fichier ou répertoire de ce type dans / homepages / 41 / d222999437 /htdocs/wp-content/themes/prose/functions.php
jplandrain
L'article n'est pas bien pensé. Il dit que les bibliothèques jQuery les moins courantes sont servies par le CDN Google sur environ 0,5% de toutes les pages. Lors d'une session de navigation générale, je visite des tas de pages, en particulier ces petits liens vers des sites comme par exemple celui qui l'héberge. Ou des sites de blog. Je visite facilement 30 sites uniques par jour, après une semaine, les chances de ne pas l'avoir mis en cache sont assez minces. Bien qu'il puisse ne pas être mis en cache pour tous vos utilisateurs, les personnes qui utilisent largement Internet les mettront presque toujours en cache, car elles visitent bien plus d'un domaine unique au total.
Aidiakapi
8

Une raison majeure de NE PAS laisser Google héberger votre jQuery, une raison à laquelle beaucoup de gens ne pensent pas, est qu'il ne se téléchargera pas si vous êtes en Chine. Il est bloqué avec de nombreux autres scripts, polices, etc. hébergés par Google CDN. Si vous avez besoin d'atteindre un public chinois, il est préférable de toujours utiliser une solution de secours hébergée sur votre propre serveur. Google APIS bloqué en Chine

Joshua Maddox
la source
Je ne suis pas d'accord avec @tmthydvnprt. La question est opiniâtre, c'est donc là que réside l'essentiel de la faute, mais cela répond à la question.
Au revoir StackExchange
1
Je suis venu ici pour la même chose. Si les utilisateurs sont en Chine, presque tout ce qui provient de Google est bloqué par le grand pare-feu. Cependant, ce n'est probablement pas un problème car de nombreuses personnes en Chine utilisent un service VPN, et vous ne voulez probablement pas cibler le marché chinois de toute façon.
Justin
0

Quelques bonnes réponses ici à "Pourquoi tu devrais ..." et "Pourquoi tu ne devrais pas ..."

Je souhaite simplement ajouter une liste d'alternatives à Google si vous souhaitez charger jQuery à partir d'un CDN.

Mais pour résumer, vous améliorez fondamentalement les performances globales de votre site Web / application.

EdwardM
la source
0

En utilisant le CDN avec un Service Worker, vous pouvez télécharger le CDN une fois dans la vie du client, et pas à chaque fois que vous mettez à jour votre code.

Oscar Gardiazabal
la source