Vantaggi e insidie ​​dell'hosting di jQuery localmente [chiuso]


85

Attualmente stiamo estraendo le librerie jQuery e jQueryUI (e jQueryUI CSS) dalla rete CDN di Google. Mi piace perché posso chiamare google.load("jquery", "1");
e verrà utilizzato l'ultimo jQuery 1.xx.

Ora devo tirare le librerie a livello locale per motivi di sicurezza.

Sono felice di tirarli a livello locale, ma mi chiedo quali sono alcuni altri vantaggi e insidie ​​a cui prestare attenzione?


6
di quali problemi di sicurezza stiamo parlando?
Ascherer

Non ho chiesto. Immagino che non sia tanto la sicurezza ma il tentativo di controllare la larghezza di banda tramite firewall gmail ecc.
orolo

Risposte:


109

Il vantaggio principale di averli su un CDN è che i file possono essere scaricati parallelamente ai file scaricati dal proprio sito web. Ciò riduce la latenza su ogni pagina. Quindi, il rovescio della medaglia è una trappola dell'hosting locale: maggiore latenza . Il motivo principale è che i browser sono limitati nel numero di connessioni che possono effettuare contemporaneamente allo stesso dominio web. In IE6 questo era impostato su 2 connessioni simultanee allo stesso dominio - condiviso tra tutte le finestre aperte di IE !! In IE8 + è migliorato, impostando il valore predefinito su 6, che è in linea con FF / Chrome, ma comunque, se hai molte immagini e non stai usando sprite, sperimenterai una forte latenza.

Usando un CDN, imposterei sempre la versione della libreria in modo esplicito piuttosto che ottenere l'ultima. Ciò riduce il rischio che nuove versioni violino il codice. Non molto probabile con jQuery, ma possibile.

L'altro vantaggio principale dell'utilizzo di una CDN è la riduzione del traffico sul tuo sito . Se paghi per GB o ti trovi su un server virtuale con risorse limitate, potresti scoprire che le prestazioni complessive del sito aumentano e i costi di hosting si riducono quando estrai alcuni dei tuoi contenuti a una CDN pubblica.

Assicurati di leggere anche l'altra risposta a questa domanda di @Xaver. Questo è un ottimo trucco


5
Un altro vantaggio dell'impostazione esplicita della versione della libreria è che Google offre un tempo di cache più lungo, ad esempio specificare 1.9.1 darà una durata della cache più lunga rispetto alla richiesta 1.9 (poiché una nuova versione di jQuery 1.9 potrebbe essere rilasciata ma 1.9.1 lo stesso).
Barry

uhhh - revaxarts ? Non vedo alcuna risposta del genere, né attuale né cancellata. Qual è il "trucco molto buono"?
ashleedawg

145

Uso sempre il CDN (Content Delivery Network) di Google. Ma nel caso in cui sia offline:

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

Prendi jQuery di Google CDN e fai il fallback in locale se necessario

Modifica : se non è necessario supportare IE6 e il tuo sito ha un utilizzo parziale di https, puoi rimuovere anche http:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>


25
XVIDEOS ora usa questa soluzione: P
Shougo Makishima

Devo mancare qualcosa qui ... Questo approccio non presume che il jQuery caricato da CDN verrà caricato e interpretato prima che venga interpretata la riga successiva ( !window.jQuery...)? <script>i tag vengono elaborati in modo asincrono, giusto?
rinogo

2
<script>i tag vengono elaborati in modo sincrono! Sulla seconda riga jQuery deve essere già caricato ma nel caso in caso contrario iniettiamo un po 'di JS per caricarlo localmente. Il document.writenon verrà mai eseguito se jQuery esiste già.
Xaver

24

Altri hanno coperto i benefici. Insidie:

  • Se includi solo contenuto dal tuo server, questo è un server che deve essere in esecuzione, e non bloccato da firewall, ecc. Per far funzionare il tuo sito. Estrai lo script da una terza parte e ora sono due server che devono essere in esecuzione e sbloccati per far funzionare il tuo sito.

  • Qualsiasi sito da cui esegui l'accesso <script>può controllare completamente l'esperienza dell'utente sul tuo sito. Se Google si sentisse male, potrebbe mettere qualcosa nella sua copia di jQuery per registrare i tuoi tasti premuti, rubare informazioni personali dalla pagina in cui ti trovi per collegarle al loro database di monitoraggio web, farti pubblicare "I love Google!" commenti a ogni modulo e così via.

Google probabilmente non lo farà effettivamente, ma è un fattore fuori dal tuo controllo e sicuramente qualcosa di cui preoccuparti con altri servizi di hosting di script. Ci sono stati incidenti prima in cui gli script delle statistiche sono stati compromessi con caricatori di malware.

Prima di includere qualsiasi script di terze parti, anche su una singola pagina del tuo sito, devi fidarti al 100% di loro con tutte le funzionalità accessibili all'utente visibili su quel nome host (comprese le funzioni di amministrazione rivolte al web).


21
Google non lo farebbe ... ADORO GOOGLE ... vero? :-p
JasCav

1
Ottimi punti per quanto riguarda i problemi di sicurezza.
Naltroc


1
Aspetti positivi: non ho mai pensato a come uno script CDN remoto potrebbe essere violato e poi scaricato sul mio sito. Probabilmente non è comune per le principali librerie come jQuery, jQueryUI, Boostrap, ecc., Ma proprio come notato, le librerie più piccole e meno supportate potrebbero cadere vittima, soprattutto se non vengono aggiornate. Buoni punti +1
twknab

14

Google CDN:

  • caching, buono per le prestazioni, più utenti probabilmente lo hanno già e viene scaricato in parallelo
  • se mai, Heaver non voglia che cdn cada. sei fregato.
  • se una nuova versione interrompe i plugin o il sito esistenti, lo saprai forse troppo tardi

A livello locale:

  • lo sviluppo senza essere collegati alla rete è possibile
  • può ancora ottenere alcuni vantaggi in termini di prestazioni tramite compressione gzip, oltre alla minimizzazione

5
tuttavia il caricamento di jquery u dal cdn di Google è minimizzato. Un altro vantaggio nell'usare un cdn è che è più pulito per la struttura della tua directory :)
Ascherer

if a new version breaks your existing plugins or site, you'll know about it possibly too lateè possibile specificare la versione nel collegamento CDN, per evitarlo.
Adam

13

Preferisco usare la mia versione locale, perché non ho il controllo su ciò che forniranno. Ad esempio, non voglio che i miei utenti vengano influenzati da google-analytics o qualcosa di simile, perché questo è un problema legale nel mio paese.


9

Vantaggi: (in particolare per CDN di Google)

  1. Download in parallelo con i tuoi file. Altre risposte affrontano ulteriormente questo aspetto
  2. È probabile che i server di Google siano in grado di fornire fisicamente i contenuti più velocemente
  3. Librerie e framework comuni potrebbero essere già sulla macchina dell'utente, poiché la cache HTTP per una CDN è universale in tutti i siti
  4. La tua larghezza di banda non dovrebbe servire a servire file di libreria di grandi dimensioni

2

Praticamente da ogni punto di vista, l'utilizzo del CDN di Google è una buona cosa.

Le prestazioni saranno migliorate (anche se in modo abbastanza marginale, a meno che il tuo sito non sia molto occupato) e la quantità di dati che i tuoi server devono trasmettere diminuirà (sebbene jQuery non sia esattamente una cosa enorme da scaricare), ecc.

L'unico motivo per cui non vorresti usarlo è se non ti fidi di Google. Usandolo, offri effettivamente a Google una finestra aggiuntiva di informazioni nel profilo di traffico del tuo sito, inclusa la conoscenza degli URL che altrimenti potresti non voler rendere pubblici (ad es. Aree protette del tuo sito).

Se sei paranoico riguardo alla sicurezza, questo potrebbe essere sufficiente per convincerti a non usarli (dopotutto, ospitarlo da solo non rallenterà esattamente il tuo sito a una scansione), ma in generale la maggior parte delle persone adotterebbe la visione pragmatica che Google sa già abbastanza del loro sito che aggiungerlo non farà molta differenza.


1

Probabilmente al giorno d'oggi sono in minoranza, ma direi che non vuoi usare CDN a meno che tu non ne abbia davvero bisogno. I fattori chiave per iniziare a usarlo sono:

  • Utenti geografici incrociati. Se ospiti il ​​tuo sito web negli Stati Uniti ma hai un numero visibile di utenti europei, CDN migliorerà il tempo di caricamento.
  • Grandi quantità di utenti e \ o grandi contenuti, quindi un server principale non è più sufficiente. Si può pensare a qualsiasi sito Web di video porno (o Netflix, se lo si desidera). Il flusso video è un carico pesante, con CDN sarebbe molto molto meno carico sul server principale.

Ma ... il punto è che questi punti non sono realmente applicabili al 90% dei siti web nel mondo. Scommetto che non sei Facebook con milioni di utenti online in tutto il mondo, non sei Pornhub con centinaia di GB trasferiti ogni secondo.

Se il tuo sito web è mirato agli utenti della tua città / paese e la capacità di un server è sufficiente per il numero di utenti che hai, perché mai vorresti una CDN? È più veloce per i tuoi utenti nella tua città e più semplice per te recuperare tutto dal tuo server principale in locale.


Si trattava più di CDN in generale, ora lasciatemi essere più vicino alla vera domanda su jQuery o qualsiasi altra libreria.

Se vuoi che il tuo sito web rimanga accessibile e funzioni senza manutenzione per più di un anno, diciamo, mettilo a livello locale. Oggigiorno le biblioteche vengono aggiornate a un ritmo folle che probabilmente non vorresti seguire. E alla fine le vecchie versioni verranno eliminate. Inoltre, l'intera libreria può morire (probabilmente non applicabile a jQuery).

Dalla mia recente esperienza - ho aggiornato TinyMCE sul sito web che mantengo da 3.xx (datato 2012) a 5.xx (datato primavera 2019). Questo sito web ha funzionato per 7 (sette!) Anni senza alcuna manutenzione in questa parte della logica. Allora non esisteva un concetto di "minimizzazione" e i CDN non erano così comuni come adesso. Ma anche se fossero comuni, non sai mai cosa succederà tra 3-5-10 anni da oggi. Di solito vuoi che il tuo sito web rimanga vivo anche senza che tu lo mantenga, vero? Tuttavia, se estrai jQuery da CDN oggi, questo collegamento potrebbe (e, probabilmente, si interromperà) tra 5 anni.

La soluzione con CDN E fallback alla versione locale come suggerito da @Xaver può essere un buon compromesso. Ma ... forse sbarazzarsi del collegamento CDN? ;)


0

Per me dipende davvero da quanto controllo desideri avere. Se sei come me e hai bisogno di sviluppare un host locale quando lavori e viaggi. Avere i file jquery in locale è meglio che averlo ospitato su google o altrove.

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.