Microsoft CDN per jQuery o Google CDN? [chiuso]


187

In realtà importa quale CDN usi per collegare il tuo file jquery o qualsiasi file javascript per quella materia. Uno è potenzialmente più veloce dell'altro? Quali altri fattori potrebbero svolgere un ruolo in quale cdn decidi di utilizzare? So che Microsoft, Yahoo e Google hanno tutti CDN ora.

Risposte:


151

Aggiornamento basato sui commenti:

Versione breve: non importa molto, ma può dipendere da ciò che ospitano. Essi tutte le cose diverse ospitanti: Google non ospita jQuery.Validate, Microsoft non ha padrone jQuery-UI, poiché 2016 fanno !!, Microsoft offre loro script che altrimenti sarebbero serviti tramite ScriptResource.axde un'integrazione più semplice (ad esempio ScriptManager con ASP. Net 4.0 ).

Nota importante: se stai creando un'applicazione intranet, stai lontano dall'approccio CDN. Non importa chi lo sta ospitando, a meno che tu non sia internamente su un server molto sovraccarico, nessun CDN ti offrirà più prestazioni di quanto non lo sia la Ethernet locale da 100 mb / 1 GB. Se usi un CDN per un'applicazione rigorosamente interna, stai danneggiando le prestazioni . Imposta correttamente le intestazioni di scadenza della cache e ignora l'esistenza di CDN nello scenario solo intranet.

Le possibilità di essere bloccati sembrano essere quasi uguali, quasi zero. Ho lavorato su contratti in cui questo non è vero, ma sembra essere un'eccezione. Inoltre, dalla pubblicazione originale di questa risposta, il contesto che la circonda è molto cambiato, la Microsoft CDN ha fatto molti progressi.

Il progetto a cui sto lavorando attualmente utilizza entrambe le CDN che funzionano meglio per la nostra soluzione. Diversi fattori giocano in questo. Gli utenti con un browser più vecchio probabilmente stanno ancora effettuando 2 richieste simultanee per dominio come raccomandato dalla specifica HTTP . Questo non è un problema per chiunque esegua qualcosa di relativamente nuovo che supporti il ​​pipelining (ogni browser corrente), ma in base a un altro fattore stiamo eliminando anche questa limitazione, almeno per quanto riguarda il javascript.

La CDN di Google che stiamo utilizzando per:

Il CDN di Microsoft che stiamo utilizzando per:

Il nostro server:

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

Poiché parte del nostro processo di compilazione consiste nel combinare e minimizzare tutto il javascript personalizzato, lo facciamo tramite un gestore di script personalizzato che include le versioni di rilascio o debug (non minimizzate) di questi script a seconda della build. Poiché Google non ospita il pacchetto di convalida jQuery, questo può essere un aspetto negativo. MVC lo sta includendo / usando nella loro versione 2.0, quindi puoi fare affidamento completamente sul CDN di Microsoft per tutte le tue esigenze e tutto automaticamente tramite ScriptManager .

L'unico altro argomento da fare sarebbero i tempi DNS, il cui costo è in termini di velocità di caricamento della pagina. In media: semplicemente perché viene utilizzato di più (è in circolazione da più tempo) ajax.googleapis.comè probabile che venga restituito dal DNS prima di ajax.microsoft.com, semplicemente perché il server DNS locale ha maggiori probabilità di ricevere una richiesta per questo (si tratta del primo utente nell'area di rigore) . Questa è una cosa molto minore e dovrebbe essere presa in considerazione solo se le prestazioni sono estremamente importanti, fino al millisecondo.
(Sì: mi rendo conto che questo punto è contrario al mio utilizzo di entrambi i CDN, ma nel nostro caso il tempo DNS è ampiamente oscurato dal tempo di attesa sul javascript / blocco che si verifica)

Infine, se non l'hai ancora visto, uno dei migliori strumenti disponibili è Firebug e alcuni plug-in: Page Speed e YSlow . Se usi un CDN ma le tue pagine richiedono immagini ogni volta a causa della mancanza di intestazioni di cache, ti stai perdendo il frutto a basso impatto. Il pannello Net di Firebug può darti rapidamente una rapida suddivisione del tempo di caricamento della pagina e Page Speed ​​/ YSlow può offrire alcuni buoni suggerimenti per aiutarti.


26
Meno probabilità di essere bloccato? Mi piacerebbe sapere come ti è venuta l'idea. La rete di MS non è comunque di MS, è akamai che ha gestito server con bilanciamento del carico per molto più tempo rispetto a Google, il che rende assurde anche il "miglior sistema di sicurezza". Davvero, se hai intenzione di fare affermazioni come queste, alcune prove sarebbero carine.
Blowdart,

16
Alcune aziende, e ho lavorato per alcuni, bloccano * .microsoft.com come parte del blocco di Windows Update. È corretto? No, succede? Sì. Esempio: ajax.microsoft.com/...it rientra nel blocco * .microsoft.com e non nell'eccezione www, viene bloccato quando un'azienda sceglie di bloccare qualsiasi cosa tranne www.microsoft.com. Non ho detto che è molto probabile, ho detto che è più probabile, poiché non ho mai visto Google bloccato ma ho visto il contrario.
Nick Craver

5
E ho visto Google bloccato per bloccare Gmail nei siti governativi. Ma poiché è così raro, difficilmente tenterei di usarlo come giustificazione in questo caso.
Blowdart,

19
Da quando è stato scritto, MS ha aggiunto jQuery-UI al suo CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean,

3
@ Nick Microsoft ha spostato il suo CDN da ajax.microsoft.com a ajax.aspnetcdn.com. Quindi non c'è alcuna possibilità di bloccare la CDN di Microsoft come parte del blocco degli aggiornamenti di Windows.
Sachin Joseph,

88

Dovresti assolutamente utilizzare Google CDN per jQuery (e questo proviene da uno sviluppatore incentrato su Microsoft).

Sono semplici statistiche. Coloro che prenderebbero in considerazione l'uso della MS CDN per jQuery saranno sempre una minoranza. Ci sono troppi sviluppatori non MS che usano jQuery che useranno Google e non prenderebbero in considerazione l'utilizzo di Microsoft. Poiché una delle grandi vincite con una CDN pubblica è il miglioramento della memorizzazione nella cache , la suddivisione dell'utilizzo tra più CDN riduce il potenziale di tale vantaggio.


7
se continuiamo a pensare in quel modo, solo i più grandi potranno respirare. Non usare solo google perché è google e presumi che tutti siano con loro (senza dubbio la maggior parte lo sono con loro). Ma vinci meglio, confronta i risultati e seguili.
mamu,

20
Non è un presupposto. I siti nella top 200.000 di Alexa che utilizzano la CDN di Google superano quelli di Microsoft di oltre 100: 1. In termini di popolarità per la memorizzazione nella cache, l'unico punto a favore di MS jQuery CDN è che Microsoft.com lo utilizza, il che gli dà molta esposizione da solo quel riferimento (ma non tanto quanto le migliaia di siti principali che fanno riferimento a Google ).
Dave Ward,

@DaveWard, puoi verificare che sia ancora così o hai cambiato le tabelle negli ultimi anni?
arrogante

3
@snumpy: Google CDN ha tolto un po 'di vantaggio da quello che ho visto. Non c'è niente di sbagliato in Microsoft CDN. È veloce e ha alcuni file che Google non ha. Il vantaggio della memorizzazione nella cache tra siti dipende tuttavia dalla copertura dell'intera rete e Google ne domina tutti gli altri a tale riguardo.
Dave Ward,

Poiché sono passato da jQuery CDN a Microeoft per l'hosting di jQuery Mobile, ho spostato i miei altri download di jQuery da Google per ridurre il numero di roundtrip DNS. Solo un altro fattore :)
Rob Grant

20

Google ti invierà una versione jQuery minimizzata con il proprio software, questa versione è 6kb più leggera della versione minimizzata standard fornita da MS. Scegli Google.


18

Una cosa da considerare è che entrambe le società offrono librerie "extra" leggermente diverse:

A seconda delle tue esigenze, questo potrebbe essere rilevante.


23
Da quando è stato scritto, MS ha aggiunto jQuery-UI al suo CDN: asp.net/ajaxlibrary/cdn.ashx#Using_jQuery_UI_from_the_CDN_10
Will Dean,

15

Va inoltre notato che poiché ajax.microsoft.com è un sottodominio di richieste microsoft.com invia tutti i cookie microsoft.com aggiungendo al tempo complessivo necessario per recuperare il file.

Inoltre, ajax.microsoft.com utilizza la compressione IIS7 predefinita, inferiore alla compressione standard utilizzata da altri server Web.

http://ajax.microsoft.com/ajax/jquery/jquery-1.4.4.min.js - 33.4K

http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js - 26.5K

Inoltre, come altri hanno già detto, Google CDN è molto più popolare, il che aumenta notevolmente la possibilità che un file venga memorizzato nella cache.

Quindi consiglio vivamente di utilizzare google.


3
Questa era una buona obiezione al momento, ma non si applica più poiché il nome di dominio CDN consigliato è ora ajax.aspnetcdn.com. Anche il blocco dell'obiezione * .microsoft.com non si applica più.
Stephen Kennedy,

questo è vero. felice di aver finalmente risolto questa parte. Ora non mi sento così male nell'includere jquery validate / cycle plugin da ms cdn.
Alistair,

Anche i cookie non si applicano più a causa del passaggio a aspnetcdn.
Rob Grant,

11

Probabilmente non importa, ma potresti confermarlo con alcuni test A / B. Invia metà del tuo traffico a una CDN e metà all'altra e imposta un profilo per misurare la risposta. Penso che sia più importante poter passare facilmente nel caso in cui l'uno o l'altro presentasse seri problemi di indisponibilità.


7

So che sto suonando un po 'tardi qui, ma ecco il codice che ho usato in produzione. Non ho mai avuto problemi con esso, ma il tuo chilometraggio può variare. Assicurati di testarlo nel tuo ambiente.

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

1
Sfortunatamente alcuni browser (IE6) non ritardano l'elaborazione di quello script online fino a quando non viene caricato lo script src =, quindi non funzionerà come previsto. Vorrei che lo fosse!
Walden Leverich,

2
Quindi, i tuoi utenti IE6 sperimentano un'esperienza leggermente lenta. Buon compromesso se me lo chiedi. IE6 è in declino ... anche nelle Intranet aziendali.
Armstrongest il

7

Riguarda le statistiche: jquery.com carica jQuery da Google. E anche Twitter, StackOverflow e molti altri. Quindi, ci sono possibilità abbastanza alte che l'utente del tuo sito Web lo abbia già memorizzato nella cache = nessun download .

Dimentica validatore, larghezza di banda e velocità perché questo è il vantaggio principale. Altrimenti, qualsiasi altra opzione CDN si esibirà essenzialmente allo stesso livello.


1
Sì, ma Twitter (secondo l' encosia.com / 2010 / 09 / 15/… di Dave Ward ) utilizza jQuery 1.3.0 (nel "vecchio" Twitter), quindi non contano davvero ... ancora ...
veggerby

Bene, i siti che ho fatto qualche tempo fa usa ancora jQuery 1.3.0, come il (vecchio) Twitter. Importa sempre.
achairapart,

6

Uno è potenzialmente più veloce dell'altro?

In realtà ero curioso di questo da solo, quindi ho impostato una pagina di test jsbin usando ciascuno dei seguenti e poi l'ho eseguito attraverso lo strumento di confronto visivo di webpagetest.org. Ho testato:

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

Chi è stato il più veloce: code.jquery.com di 0,1 secondi in entrambi i test

Chi è stato il più lento: ajax.aspnetcdn.com di 0,7 secondi nel primo test e ajax.googleapis.com di 1 secondo nel secondo test

Ecco il primo test (ognuno è stato testato 3 volte):

Video: http://www.webpagetest.org/video/view.php?id=121019_16c5e25eff2937f63cc1714ed1eac814794e62b3

Rapporti: http://www.webpagetest.org/video/compare.php?tests=121019_D2_KF0,121019_9Q_KF1,121019_WW_KF2,121019_9K_KF3

Ecco il 2 ° test (altri 3 ciascuno):

Video: http://www.webpagetest.org/video/view.php?id=121019_a7b351f706cad2c25664fee7ef349371f17c4e74

Rapporti: http://www.webpagetest.org/video/compare.php?tests=121019_MP_KJN,121019_S6_KJP,121019_V9_KJQ,121019_VY_KJR


4

Come affermato da Pingdom :

Quando qualcuno visita il tuo sito, se ha già visitato un altro sito che utilizza lo stesso file jQuery sullo stesso CDN, il file sarà stato memorizzato nella cache e non dovrà essere scaricato affatto. Non può andare più veloce di così.

Ciò significa che la CDN più utilizzata avrà le probabilità dalla sua parte, che possono ripagare il tuo sito.

Alcune osservazioni sulle prestazioni: la CDN di Google è costantemente la più lenta delle tre sia in Nord America che in Europa. In Europa, la CDN di Microsoft è la più veloce.


3

Penso che dipenda da dove è il tuo pubblico di destinazione. Puoi usare alertra.com per controllare la velocità della CDN da molte località del mondo.


Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti a un autore, lascia un commento sotto il suo post.
Fiona - myaccessible.website

1
Per Fiona, è la mia risposta alla domanda. La domanda è "importa", la mia risposta è "dipende da dove si trova il suo pubblico di destinazione" e ho fornito un sito per testare la velocità da diversi luoghi del mondo per fargli decidere quale CDN usare. Non è un commento, è una risposta.
silenzioso,

3

Un'ulteriore considerazione: se il tuo sito è SSL e devi supportare Android 2.1 (o precedente), il certificato SSL sulla versione HTTPS della Microsoft CDN causerà l'arresto anomalo di quelle versioni del browser Android, per questo problema: http: // codice .google.com / p / android / issues / detail? id = 5001 . Non è un "errore" di Microsoft, in quanto il certificato SSL è tecnicamente valido e il difetto è nell'implementazione SSL di Android ... ma comunque andrà in crash il tuo sito.

Il certificato SSL sulla CDN di Google non è incompatibile con questo particolare problema (relativo al "Nome alternativo soggetto certificato").

Quindi, per il supporto SSL + Android 2.1, utilizzare Google CDN.


2

La mia risposta è un po 'diversa dalle altre, andrò con microsoft se hai bisogno del validatore jquery di cui quasi tutti hanno bisogno se stai usando jquery.

La connessione http di Microsoft CDN è Keep-Alive che è un grande vantaggio quando si richiedono più elementi.

Quindi, se hai bisogno della convalida di jquery, usa Microsoft CDN, anche se hai bisogno di jquery, io uso microsoft perché google non mantiene in vita quindi ogni richiesta è autonoma. quindi mescolare in quel modo è un vantaggio. se si utilizza microsoft solo per validatore, si sta effettuando una connessione separata con il server google per ogni richiesta.



1

Quando usi Google CDN, considera anche che a volte le persone fanno errori di battitura come ajax.googelapis.com. Questo potrebbe potenzialmente creare un attacco xss (cross site scripting) davvero brutto. In realtà l'ho provato registrando un errore di battitura su googlapis.com e molto rapidamente mi sono trovato a servire richieste di javascript, mappe, css ecc.

Ho inviato un'email a Google e ho chiesto loro di registrare URL di battitura CDN simili ma non ho ricevuto risposta. Questo potrebbe essere un vero motivo per non fare affidamento sui CDN perché ci sono aggressori potenzialmente pericolosi in attesa delle richieste di refuso e possono facilmente rispondere a jquery ecc. Con un payload xss.

Grazie


1
forse un po 'fuori tema, ma punto interessante.
achairapart,

1

A seconda del settore di destinazione dell'applicazione, potresti non voler utilizzare una rete CDN gestita da altre organizzazioni. Solleva spesso problemi di conformità, privacy e riservatezza.

Ad esempio, quando includi Google Analytics in un'applicazione protetta, il browser invia comunque l'URL corrente come intestazione "referer". Qualsiasi identificatore, ad esempio un ID di sessione o un token segreto, può apparire nei loro registri. Ad esempio, se un IP client di 192.0.2.5 fa riferimento https: //healthsystem.example/condition/impotence , allora puoi dedurre informazioni che sono considerate piuttosto private.

Altri casi includono informazioni sulle conseguenze, come un numero di conto, un numero di previdenza sociale o informazioni sulla sessione nell'URL. Questo tipo di dati non dovrebbe mai essere nell'URL in quanto può essere utilizzato al di fuori dell'applicazione.

Anche se puoi fidarti di Google, Microsoft o Yahoo, i tuoi utenti potrebbero non esserlo.

Per settori come quello finanziario, legale e sanitario, potresti voler creare la tua CDN con l'aiuto di un fornitore (ad esempio Akamai) con il quale puoi firmare un BAA.


1

Ti consiglierei di basare il tuo utilizzo sulla posizione generale degli utenti targetizzati.

Se il tuo sito è destinato al grande pubblico, utilizzare la CDN di Google sarebbe una buona scelta.

Se il tuo sito è destinato anche alla Cina, utilizzare la CDN di Microsoft sarebbe una scelta migliore. So per esperienza, poiché i server di Google sono stati bloccati dal governo cinese, rendendo i siti Web che li utilizzano non caricabili.

* Tieni presente che puoi quindi creare siti specifici per regione, ad esempio cn.mysite.com per soddisfare le esigenze specifiche della Cina, ma se sei a corto di risorse e tempo, vale la pena prendere in considerazione.

Elenco completo di Microsoft CDN qui. http://www.asp.net/ajaxlibrary/cdn.ashx

Da allora sono stati rinominati in ajax.aspnetcdn.com , il che riduce la probabilità di blocco da parte delle regole del firewall.


-3

Vorrei usare entrambi!

Poiché l'hosting di Google Jquery è in circolazione da molto più tempo, è molto più probabile che le persone lo abbiano già memorizzato nella cache rispetto a quello di Microsoft, quindi lo avrei prima.

Personalmente, userei qualcosa del genere -

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
}

(Non sono sicuro che funzioni al 100%, ma stavo solo per scrivere l'idea e non un esempio - Questo fa riferimento a Jquery ospitato da Google e non a quello di Microsoft in quanto non sono riuscito a trovare il link)


6
jQuery non verrà mai definito se non lo porti nella tua pagina. La memorizzazione nella cache del file .js doe snot lo rende disponibile per tutte le pagine del browser per impostazione predefinita!
Falkayn,

1
Funziona: S Leggi lo script - se non è definito, scrive e carica?
Wil,

12
Non ho mai capito perché la gente faccia "<scr" + "ipt ..."
codardo anonimo il

3
"A seconda del browser, della quantità di altri javascript precedenti e di quanto sia ben strutturato il codice generale, questo viene fatto per impedire al parser di interpretare i tag <script> e </script> come codice eseguibile anziché come stringa da scrivere ".
SeanJA,

2
Il problema è che jQuerynon verrà mai definito se non lo hai caricato attivamente. Nel tuo script il primo ramo verrà sempre eseguito (a meno che tu non abbia un'altra inclusione jQuery sopra), rendendo lo script superfluo.
jensgram,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.