Github dovrebbe essere usato come CDN per le librerie javascript? [chiuso]


94

Fornire librerie javascript da un CDN invece che dal tuo server ha enormi vantaggi. Meno lavoro per il tuo server, possibilità per la CDN di avere una copia più vicina all'utente rispetto al tuo server, ma soprattutto una buona probabilità che il browser dell'utente lo abbia già memorizzato nella cache da quell'URL. L'ultimo significa meno lavoro totale per tutti, quindi è chiaramente una vittoria in tutto, ed è più probabile che più spesso noi (sviluppatori) facciamo affidamento sui CDN per servire il nostro javascript.

Ma i popolari CDN javascript (Google, Microsoft, altri?) Ospitano solo un piccolo numero di file. Per altri possiamo scegliere di ospitarli noi stessi, oppure ... usare il server di controllo del codice sorgente come una sorta di CDN. È improbabile che Github o simili dispongano di una cache di file distribuita geograficamente ottimizzata per la pubblicazione a livello globale. Ma se è pratica comune, allora c'è una buona possibilità che il browser dell'utente lo abbia memorizzato nella cache. L'argomento dello scaricamento del lavoro dai nostri server a Github è valido solo se Github si è volontariamente offerto di farlo.

Quindi è pratica comune? Dovremmo incoraggiarci a vicenda a farlo? Github se ne frega? Hanno una politica ufficiale dichiarata?


5
Cosa succede se l'autore riorganizza la struttura dei file? Non è il suo codice problema su centinaia di siti Web interrotti.
Raynos

2
@ Raynos Se sei l '"autore" del repository GitHub, controlli le modifiche.
Chris Jacob

2
@ChrisJacob questo è il punto. Se cambio la struttura del mio file non è un mio problema che indichi un pezzo di codice che non esiste più.
Raynos

5
Puoi utilizzare rawgithub.com per condividere HTML, JavaScript o CSS con qualcuno per una rapida demo, o forse per usarlo in un test jsPerf.
Giovanni Cappellotto

La domanda dovrebbe essere riaperta in quanto ora c'è una risposta giusta nel commento sopra di @GiovanniCappellotto.
Supersharp

Risposte:


93

Non dovresti farlo per i file JavaScript se ti interessano le prestazioni o la compatibilità con IE9.

GitHub non fornisce i suoi file "grezzi" con un'intestazione di scadenza lontana futura. Senza la possibilità di memorizzare nella cache cross-site, si perde il più grande vantaggio dell'utilizzo di una CDN pubblica per ospitare JavaScript. In effetti, l'utilizzo di GitHub come CDN sarà più lento del semplice hosting dei file sul proprio server dopo la prima richiesta del file da parte di ogni utente (supponendo che si configuri correttamente la cache sul server).

Un altro problema è che GitHub non serve file "raw" con un'intestazione del tipo di contenuto che corrisponde al tipo MIME effettivo del file. In IE9 (e forse altri browser / proxy / firewall / ecc.), I file JavaScript che non vengono forniti con il tipo di contenuto corretto vengono bloccati per impostazione predefinita. Puoi vederlo in azione nella pagina demo di BlockUI, ad esempio:

inserisci qui la descrizione dell'immagine


10
Inoltre ... "Quando richiedi il file raw in questo modo, non stai accedendo direttamente al file dal filesystem! Stai anche attraversando strati di codice dell'applicazione, il che rallenterà sicuramente il tuo sito. Non farlo . Invece, crea un ramo gh-pages e caricalo da lì "- viatropos.com/blog/github-as-a-cdn
Chris Jacob

RawGit serve file raw direttamente da GitHub con intestazioni Content-Type appropriate. Utilizza un tag specifico o un hash di commit nell'URL (non un ramo). I file vengono memorizzati nella cache in modo permanente in base all'URL. rawgit.com
Kerem Baydoğan


11

Questo è stato recentemente chiesto nei forum di supporto di GitHub e la risposta ufficiale è stata che va bene.

Detto questo, sono d'accordo con altre risposte: github non è mai stato pensato per essere un CDN, mentre Google e Microsoft hanno un'infrastruttura specifica per questo.


7
Chiarire. La risposta del forum di supporto è in relazione all'articolo a cui ho collegato nella mia risposta (Pagine GitHub come CDN - non file "raw" di GitHub): stackoverflow.com/questions/5502540/… ).
Chris Jacob

10

Va bene per la prototipazione / cose personali, ma per la produzione guarderei:

http://www.cdnjs.com/

http://cachedcommons.org/ - non più disponibile


Spero che tu sappia che CachedCommons.com serve solo da github.com
ocodo

Ma gli URL sembrano puntare a CachedCommons cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js , potrebbe essere un proxy immagino.
corpo a corpo l'

Mi spiace, quello che voglio dire è che le vecchie informazioni sull'uso di Github come CDN non si applicano più, a quanto pare, ed è tutto a posto. A parte possibili problemi di disponibilità in futuro, vale la pena fare il fork di una libreria per evitarlo.
ottobre

2
Sembra che il collegamento a Github non sarà presto un'opzione: github.com/blog/…
meleyal

1
In realtà non è un problema, se hai intenzione di utilizzare una risorsa basata su GitHub come cdn, assicurati che sia ospitata come parte di un sito di pagine statiche (ora GitHub.io) - È così che avresti dovuto farlo nel primo posto tra l'altro.
ocodo

-2

Lo sto facendo da mesi, prima avevo alcune preoccupazioni, ma è assolutamente fantastico se non hai problemi con i tuoi file che sono disponibili pubblicamente, usa versioni minimizzate se ti interessa.

Ma ancora - Google e MS governano lo spazio per jQuery e jQuery Templates - quindi li uso per quello.

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.