Question

Le CDN que vous utilisez pour lier votre fichier jQuery ou tout fichier javascript importe-t-il réellement. L'un est-il potentiellement plus rapide que l'autre? Quels autres facteurs pourraient jouer un rôle dans lequel cdn vous décidez d'utiliser? Je sais que Microsoft, Yahoo et Google ont tous des CDN maintenant.

Était-ce utile?

La solution

Mise à jour en fonction des commentaires:

Version abrégée: Cela n'a pas beaucoup d'importance, mais cela peut dépendre de ce qu'ils hébergent. Ils hébergent tous des choses différentes: Google n'héberge pas jQuery.Validate, Microsoft n'héberge pas jQuery-UI, depuis 2016 !!, Microsoft propose ses scripts qui seraient autrement servis via ScriptResource.axd et une intégration plus facile (par exemple, ScriptManager avec ASP.Net 4.0 ).

Remarque importante: si vous créez une application intranet, éloignez-vous de l'approche CDN. Peu importe qui l'héberge, à moins que vous ne soyez sur un serveur très surchargé en interne, aucun CDN ne vous donnera plus de performances qu'un serveur local Ethernet 100 Mo / 1 Go. Si vous utilisez un CDN pour une application strictement interne, vous nuisez à ses performances . Définissez correctement vos en-têtes d'expiration de la mémoire cache et ignorez les CDN existant. scénario intranet uniquement.

Les chances d'être bloqué semblent être à peu près égales, presque nulles. J'ai travaillé sur des contrats où ce n'est pas vrai, mais cela semble être une exception. De plus, depuis l’affichage initial de cette réponse, le contexte l’ayant beaucoup changé, le CDN de Microsoft a beaucoup progressé.

Le projet sur lequel je suis actuellement utilise les deux CDN, ce qui fonctionne le mieux pour notre solution. Plusieurs facteurs jouent dans cela. Les utilisateurs dotés d'un navigateur plus ancien font probablement toujours deux demandes simultanées par domaine comme recommandé par la spécification HTTP . Ce n'est pas un problème pour quiconque exécute quelque chose de nouveau qui soit décent et qui prend en charge le traitement en pipeline (tous les navigateurs actuels). , mais sur la base d’un autre facteur, nous éliminons également cette limitation, du moins en ce qui concerne javascript.

Le CDN de Google que nous utilisons pour:

CDN de Microsoft que nous utilisons pour:

Notre serveur:

  • Combined.js? v = 2.2.0.6190 (Major.Minor.Iteration.Changeset)

Etant donné qu'une partie de notre processus de construction consiste à combiner et à réduire au minimum tout le javascript personnalisé, nous le faisons via un gestionnaire de script personnalisé qui inclut la version ou les versions de débogage (non-minifiées) de ces scripts en fonction de la construction. Puisque Google n'héberge pas le package de validation jQuery, cela peut être un inconvénient. MVC inclut / utilise cela dans leur version 2.0, vous pouvez donc vous fier entièrement au CDN de Microsoft pour tous vos besoins, et tout cela automatiquement via le ScriptManager .

Le seul autre argument à prendre en compte serait les temps DNS, ce qui a un coût en termes de vitesse de chargement des pages. En moyenne : simplement parce qu'il est utilisé plus souvent

Autres conseils

Vous devez absolument utiliser le CDN Google pour jQuery (et cela provient d'un développeur centré sur Microsoft).

Ce sont des statistiques simples. Ceux qui envisageraient d'utiliser MS CDN pour jQuery seront toujours une minorité. Il y a trop de développeurs non-MS utilisant jQuery qui utiliseront ceux de Google et qui n'envisageraient pas d'utiliser ceux de Microsoft. Depuis une des grandes victoires avec un la mise en cache du CDN public est améliorée , le fractionnement de l’utilisation entre plusieurs CDN diminue le potentiel de cet avantage.

Google vous enverra une version jQuery rédigée avec son propre logiciel. Cette version est 6Ko plus légère que la version minifiée standard fournie par MS. Allez sur Google.

Un élément mineur à prendre en compte est que les deux sociétés proposent des options "extra" et "extra" légèrement différentes. bibliothèques:

Selon vos besoins, cela peut être pertinent.

Il convient également de noter que ajax.microsoft.com étant un sous-domaine des demandes de microsoft.com, tous les cookies de microsoft.com sont envoyés, ce qui augmente le temps total nécessaire pour récupérer le fichier.

De plus, ajax.microsoft.com utilise la compression IIS7 par défaut, qui est inférieure à la compression standard utilisée par les autres serveurs Web.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4 .4.min.js - 33,4 Ko

http://ajax.googleapis.com/ajax/libs/jquery /1.4.4/jquery.min.js - 26,5 Ko

En outre, comme d'autres l'ont mentionné, Google CDN est bien plus populaire, ce qui augmente considérablement les chances de mise en cache d'un fichier.

Je recommande donc fortement d'utiliser Google.

Cela n’a probablement pas d’importance, mais vous pouvez le valider avec certains tests A / B. Envoyez la moitié de votre trafic à un CDN et l'autre à l'autre, et configurez un profilage pour mesurer la réponse. Je pense qu'il est plus important de pouvoir basculer facilement au cas où l'un ou l'autre aurait de sérieux problèmes d'indisponibilité.

Je sais que je suis arrivé un peu tard, mais voici le code que j'ai utilisé dans la production. Je n'ai jamais eu de problèmes avec, mais votre kilométrage peut varier. Assurez-vous de le tester dans votre propre environnement.

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>    
<script type="text/javascript">
    !window.jQuery && document.write('<script src="/scripts/jquery-1.4.2.min.js"><\/script>')
</script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js" type="text/javascript"></script>
<script type="text/javascript">
    !window.jQuery.ui && document.write('<script src="/scripts/jquery-ui-1.8.2.min.js"><\/script>')
</script> 

Il s’agit de statistiques: jquery.com charge jQuery à partir de Google. Il en va de même pour Twitter, Stackoverflow et beaucoup d’autres. Il existe donc de très grandes possibilités que votre utilisateur de site Web le cache déjà = aucun téléchargement .

Oubliez le validateur, la bande passante et la vitesse, car c’est le principal avantage. Sinon, toute autre option CDN fonctionnera essentiellement au même niveau.

  

L'un est-il potentiellement plus rapide que l'autre?

J'étais vraiment curieux de cela moi-même, j'ai donc créé une page de test jsbin à l'aide de chacun des éléments suivants, puis je l'ai exécuté à l'aide de l'outil de comparaison visuelle de webpagetest.org. J'ai testé:

  1. ajax.googleapis.com
  2. code.jquery.com
  3. ajax.aspnetcdn.com
  4. cdnjs.cloudflare.com

Qui était le plus rapide: code.jquery.com de 0,1 seconde dans les deux tests

Qui a été le plus lent: ajax.aspnetcdn.com avec 0,7 seconde au premier test et ajax.googleapis.com avec une seconde au deuxième test

Voici le 1er test (chacun a été testé 3 fois):

Vidéo: http: //www.webpagetest .org / video / view.php? id = 121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Rapports: http: //www.webpag .org / video / view.php? id = 121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Rapports:

Comme indiqué par Pingdom :

  

Quand quelqu'un visite votre site, s'il en a déjà visité un autre   site qui utilise le même fichier jQuery sur le même CDN, le fichier   ont été mis en cache et n’ont pas besoin d’être téléchargés du tout. Il ne peut pas   obtenir plus vite que cela.

     

Cela signifie que le CDN le plus largement utilisé aura la cote sur son   côté, ce qui peut porter ses fruits pour votre site.

     

Quelques observations sur les performances:        Le CDN de Google est systématiquement le plus lent des trois en Amérique du Nord et en Europe. En Europe, le CDN de Microsoft est le plus rapide.

Je pense que cela dépend de votre public cible. Vous pouvez utiliser alertra.com pour vérifier la vitesse du CDN dans de nombreux pays du monde.

Autre considération: si votre site est SSL et que vous devez prendre en charge Android 2.1 (ou une version antérieure), le certificat SSL de la version HTTPS du CDN de Microsoft plantera ces versions du navigateur Android, selon ce problème: http://code.google.com/p/android/issues/detail?id = 5001 . Ce n'est pas la "faute" de Microsoft, car le certificat SSL est techniquement valide et le défaut réside dans la mise en oeuvre de SSL par Android ... mais il plantera néanmoins votre site.

Le certificat SSL figurant sur le CDN de Google ne correspond pas à ce problème particulier (relatif au "Nom alternatif du sujet du certificat").

Ainsi, pour la prise en charge de SSL + Android 2.1, utilisez le CDN de Google.

Ma réponse est légèrement différente de celle des autres. Je choisirai Microsoft si vous avez besoin du validateur JQuery, dont presque tout le monde a besoin si vous utilisez jQuery.

La connexion http CDN Microsoft est Keep-Alive, ce qui est un avantage considérable lorsque vous demandez plusieurs éléments.

Donc, si vous avez besoin de la validation jquery, utilisez Microsoft CDN, même si vous avez besoin de jquery ui, utilisez Microsoft, car Google ne conserve pas la trace, toutes les demandes sont donc autonomes. Donc, mélanger de cette façon est un plus. si vous utilisez Microsoft uniquement pour Validator, vous établissez une connexion distincte avec Google Server pour chaque demande.

En été, il est indiqué que Microsoft n'offre pas d'interface utilisateur, ce n'est pas correct (plus). Il peut être téléchargé à l'adresse http://www.asp.net/ajaxlibrary/cdn.ashx.

Lorsque vous utilisez Google CDN, tenez également compte du fait que certaines personnes font des fautes de frappe telles que ajax.googelapis.com. Cela pourrait potentiellement créer une très mauvaise attaque xss (cross site scripting). En fait, j'ai testé cela en enregistrant une faute de frappe sur googlapis.com et je me suis très vite retrouvé au service de requêtes en javascript, maps, css, etc.

J'ai envoyé un e-mail à Google pour lui demander d'enregistrer des URL de frappe CDN similaires, mais je n'ai pas eu de réponse. Cela pourrait être une véritable raison de ne pas compter sur les CDN car il existe des attaquants potentiellement dangereux qui attendent les requêtes de typo et qui peuvent facilement rendre leur requête, etc. avec une charge xss.

Merci

En fonction du secteur d'application visé par l'application, il est possible que vous ne souhaitiez pas utiliser un CDN géré par d'autres organisations. Cela soulève souvent des problèmes de conformité, de confidentialité et de confidentialité.

Par exemple, lorsque vous incluez Google Analytics dans une application sécurisée, le navigateur envoie toujours l'URL actuelle en tant que " référent " entête. Tous les identifiants, par exemple un identifiant de session ou un jeton secret, peuvent figurer dans leurs journaux. Par exemple, si une adresse IP client de 192.0.2.5 est référencée, https: //healthsystem.example/condition/impotence . Alors, vous pouvez en déduire des informations considérées comme plutôt confidentielles.

D'autres cas incluent des informations importantes, telles qu'un numéro de compte, un numéro de sécurité sociale ou des informations de session dans l'URL. Ce type de données ne doit jamais figurer dans l'URL, car il peut être utilisé en dehors de l'application.

Bien que vous puissiez faire confiance à Google, Microsoft ou Yahoo, vos utilisateurs ne le peuvent pas.

Pour des secteurs tels que les finances, les services juridiques et les soins de santé, vous pouvez créer votre propre CDN avec l'aide d'un fournisseur (par exemple Akamai) avec lequel vous pouvez signer un BAA.

Je vous conseillerais de baser votre utilisation sur l'emplacement général des utilisateurs que vous ciblez.

Si votre site est destiné au grand public, il serait judicieux d'utiliser le CDN de Google.

Si votre site cible également la Chine, il serait préférable d’utiliser le CDN de Microsoft. D'après mon expérience, les serveurs de Google ont continué à être bloqués par le gouvernement chinois, ce qui rend les sites Web qui les utilisent non téléchargeables.

* Notez que vous pouvez bien sûr créer des sites spécifiques à une région, par exemple. cn.mysite.com pour répondre spécifiquement à la Chine, mais si vous manquez de ressources et de temps, cela vaut la peine d'être pris en compte.

Liste complète des CDN Microsoft ici. http://www.asp.net/ajaxlibrary/cdn.ashx

Ils ont depuis été renommés ajax.aspnetcdn.com , ce qui réduit le risque de blocage par les règles du pare-feu.

Je voudrais utiliser les deux!

Étant donné que l'hébergement Google Jquery existe depuis bien plus longtemps, les chances qu'il soit déjà mis en cache par rapport à celui de Microsoft sont beaucoup plus grandes. Par conséquent, je l'aurais d'abord.

Personnellement, je voudrais utiliser quelque chose comme ceci -

if (typeof jQuery == 'undefined') {  
    // jQuery is not loaded  

  document.write("<scr" + "ipt type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js\"></scr" + "ipt>");
        }
} else {
    // jQuery is loaded
}

(Je ne suis pas sûr que cela fonctionne à 100%, mais j'allais juste écrire l'idée et non pas l'exemple. Ceci fait référence à Jquery hébergé par Google et non à celui de Microsoft car je n'ai pas trouvé le lien.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top