Libreria ospitata su Google jQuery - va bene?


14

C'è qualche vantaggio tangibile REAL dell'utilizzo della libreria ospitata su Google jQuery? O dovremmo semplicemente scaricarlo sul nostro server?

Quali sono le tue opinioni a riguardo?


1
Una semplice ricerca su Google avrebbe fornito la risposta ...
Francisco Presencia,

Risposte:


18

Ci sono due principali vantaggi nell'uso di una CDN esterna come Google per ospitare jQuery:

  1. È più veloce. Sarà sicuramente più veloce del tuo sito e probabilmente più veloce di qualsiasi CDN che hai impostato da solo.
  2. Potrebbe già essere memorizzato nella cache . Molti siti fanno riferimento anche a jQuery sulla CDN di Google, quindi se hanno visitato un altro sito prima del tuo, non dovranno nemmeno scaricarlo.

Potenziali aspetti negativi:

  1. Il dominio potrebbe essere bloccato (questo è abbastanza comune in luoghi come la Cina). Puoi risolverlo avendo un fallback locale ( vedi qui per come ).
  2. La frammentazione dei numeri di versione è piuttosto elevata, quindi i visitatori del tuo sito possono avere molte versioni diverse memorizzate nella cache, ma non quella a cui hai fatto riferimento ( vedi qui per alcune statistiche recenti ). Questo è solo un problema al caricamento della prima pagina.

3
Puoi pubblicare un riferimento su come impostare un fallback locale?
Stephen Ostermiller

1
Come sottolineato da Zistolen in precedenza, un altro vantaggio è che scaricherà in parallelo sui tuoi siti Web altre risorse. Potresti volerlo aggiungere anche a questa risposta altrimenti eccezionale.
nathangiesbrecht,

È un po 'fuorviante. I browser scaricano le risorse in parallelo indipendentemente da dove sono ospitati, ma esiste un limite al numero di cose che scaricheranno dallo stesso host in una sola volta.
Tim Fountain

Ho ignorato che onestamente non è né qui né lì - il file può essere scaricato in parallelo ma è anche una ricerca DNS aggiuntiva. Inoltre, qualunque differenza nel tempo una di queste marche è comunque trascurabile.
DisgruntledGoat

Giusto. Ma su connessioni veloci, non può comportare un tempo di caricamento totale più veloce, dal momento che è possibile utilizzare più "tubo"?
nathangiesbrecht,

11

Un altro aspetto negativo:

L'uso di una CDN consente all'operatore della CDN di tracciare i visitatori dei siti. Ecco perché non costano soldi.


Tracciamento sicuro, ma non visitatori: sia il CDN di jquery sia quello di jquery di Google sono ospitati su domini che non impostano o utilizzano cookie (questa è probabilmente anche un'ottimizzazione delle prestazioni) e non ci sono informazioni realmente identificabili nella richiesta. Il provider CDN può avere un'idea sugli indirizzi IP e alcune statistiche sulle stringhe e sui referenti degli user agent. Questo è probabilmente prezioso, ma non è di per sé un enorme rischio per la privacy (se questi record fossero correlati con un altro database - diciamo annunci personalizzati offerti in momenti simili - allora forse potrebbe essere un mezzo di tracciamento).
Eamon Nerbonne,

Penso che si possa dare per scontato (nel caso di google) che i dati siano correlati con altri database, dal momento che quasi tutti usano google per cercare continuamente. Stessa cosa con i caratteri Google: di recente ho provato a ospitare autonomamente i caratteri su un server, ma ho scoperto che è molto difficile farlo. Google non lo proibisce (Open Source), ma non ti fornisce i file in modo pronto per l'uso: puoi compilarli tu stesso (ma non c'è makefile) oppure puoi inviare richieste al server che vengono utilizzati per consegnarli normalmente. Entrambi non sono fattibili per un non tecnico.
Jost

Forse. Non ho informazioni privilegiate, quindi è difficile dirlo con certezza. Sono sicuro che sarà pieno di errori e presenterà notevoli lacune: la maggior parte dei luoghi che utilizzo Internet sono NAT e molti hanno un numero limitato di utenti con macchine simili (probabilmente stringhe UA identiche) - sarebbe impossibile sapere quale la richiesta viene da chi. E, naturalmente, per quanto riguarda i pulsanti di condivisione di annunci e social, possono avere un mezzo più affidabile quasi sempre, quindi posso immaginare che non si preoccupino. Per quanto riguarda i caratteri - li ho scaricati più volte, quindi non capisco cosa intendi con questo essere duro?
Eamon Nerbonne,

Per essere chiari: sto presumendo che la maggior parte delle visite al sito web che fai possano essere e saranno monitorate dai grandi collezionisti di statistiche in virtù dei pulsanti di condivisione social (abbastanza pervasivi) e degli annunci, che sono praticamente ovunque. Quindi mi chiedo solo quanto preziose siano le informazioni fuorvianti dalle richieste js pesantemente memorizzate nella cache - sto scommettendo, non molto, quindi presumo che non si preoccupino di provare a identificare personalmente le persone che utilizzano JS servito da CDN.
Eamon Nerbonne,

Non è memorizzato nella cache come si potrebbe pensare - Quando si incorporano caratteri utilizzando il modo in cui Google lo preferisce inserendo un collegamento CSS a fonts.googleapis.com, ogni singola pagina visualizza una connessione a Google (puoi vederli in Firebug). Non importa se memorizzato nella cache o meno. Per quanto riguarda il download: puoi indicarmi un posto dove posso scaricare i caratteri in formato eot, woff, ttf e svg di alta qualità (stesse versioni di google, nessun convertitore esterno)?
Jost,

3

L'uso di CDN (s) per suddividere le dipendenze su molti server come questo in sostanza rappresenta un compromesso tra larghezza di banda e latenza, supponendo che ti interessi solo alle prestazioni.

Per inciso, presumo che l'alternativa non sia semplicemente ospitarla localmente, ma concatenarla con una diversa richiesta locale - di solito non c'è motivo di non concatenare quando è possibile.

Se la larghezza di banda è infinita, allora è meglio NON condividere, perché sarai più lento del tuo servizio più lento - poiché le latenze non sono perfettamente prevedibili, con servizi sufficienti, anche se sono veloci, hai solo bisogno di un po ' di sfortuna per causare un caricamento lento della pagina.

Se la latenza è 0, la distribuzione del carico su molti server può migliorare la larghezza di banda utilizzando molti server (non molto utile poiché probabilmente le limitazioni della larghezza di banda sono vicine ai client, non ai server), ma soprattutto, può ridurre la quantità di dati trasmessi aumentando leggermente l'efficacia della memorizzazione nella cache.

Dipende dal tuo scenario, ma in genere mi aspetto che la latenza sia più un problema della larghezza di banda, a meno che i tuoi script non siano follemente enormi (quale jquery non lo è). A quel punto, di solito è più veloce ospitare jquery come parte di un file locale concatenato.

I motivi per non ospitare localmente sono ad esempio quando paghi per la larghezza di banda o stai ospitando su un server lento (la tua connessione al client è strozzata dalla tua parte, non quella del cliente) o sai che i tuoi clienti avranno una larghezza di banda davvero bassa (dsl o modem di fascia bassa, diciamo - i dispositivi mobili tendono ad avere più problemi di latenza rispetto ai problemi di larghezza di banda), oppure i tuoi clienti pagano per la larghezza di banda (ad esempio dispositivi mobili) e gli script sono una parte così evidente di quella che la memorizzazione nella cache minore vince (non è probabile ).

In ogni caso: molto più rilevante sarà se hai prima coperto le basi; intestazioni di cache appropriate, concatenazione, minimizzazione e compressione (preferibilmente con un elevato rapporto di compressione). Ed ecco il punto cruciale: se NON lo fai, almeno la CDN lo farà, quindi è la vittoria ...

TL; DR: se hai concatenazione + minificazione + compressione + cache tutti coperti, la pubblicazione di piccoli script localmente è più rapida rispetto a una CDN nonostante le migliori prestazioni della CDN - ma solo se hai fatto i compiti, probabilmente non nella prima pagina caricare e ci sono sicuramente eccezioni a questa regola.


Per inciso, ci sono alcuni trucioli di byte vinti usando solo una richiesta: le intestazioni da sole ammontano a quasi 1kb, che su un payload di 28k non è niente. gzip funziona meglio con più contesto, risparmiando altri 0,5k. Le spese generali TCP, DNS, HTTPS possono facilmente aggiungere un KB qui o là e, peggio ancora, RTT. Ecco perché per file di piccole dimensioni come questo un CDN non è così veloce come potresti pensare.
Eamon Nerbonne,

1

L'utilizzo della libreria ospitata da Google su GoogleQuery consente di caricare più velocemente la tua pagina. In effetti, la libreria viene caricata contemporaneamente alla tua pagina anziché dopo.


Ma come influisce sul caricamento della pagina?
Leone,

1
Anche le librerie locali vengono caricate mentre la pagina viene caricata: in entrambi i casi il download dell'asset inizia quando il browser (moderno) vede lo snippet di codice che avvia il download, cosa che di solito avviene prima del download dell'intero documento. Guarda questo screenshot di Firebug per un esempio
Jost
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.