Sollte Github als CDN für Javascript-Bibliotheken verwendet werden? [geschlossen]

94

Das Bereitstellen von Javascript-Bibliotheken von einem CDN anstelle Ihres eigenen Servers bietet enorme Vorteile. Weniger Arbeit für Ihren Server, Möglichkeit für das CDN, eine Kopie näher am Benutzer als Ihr Server zu haben, aber vor allem eine gute Chance, dass der Browser Ihres Benutzers sie bereits von dieser URL zwischengespeichert hat. Letzteres bedeutet weniger Gesamtarbeit für alle, daher ist es eindeutig ein Gewinn für alle Beteiligten. Je öfter wir (Entwickler) uns auf die CDNs verlassen, um unser Javascript bereitzustellen.

Die beliebten Javascript-CDNs (Google, Microsoft, andere?) Hosten jedoch nur eine geringe Anzahl von Dateien. Für andere haben wir die Wahl, sie selbst zu hosten oder ... den Versionsverwaltungsserver als eine Art CDN zu verwenden. Es ist unwahrscheinlich, dass Github oder ähnliches über einen geografisch verteilten Cache mit Dateien verfügt, die für die globale Bereitstellung optimiert sind. Wenn dies jedoch üblich ist, besteht eine gute Chance, dass der Browser des Benutzers es zwischengespeichert. Das Argument, die Arbeit von unseren Servern auf Github zu verlagern, ist nur gültig, wenn Github sich freiwillig dazu bereit erklärt hat.

Ist es also übliche Praxis? Sollten wir uns gegenseitig dazu ermutigen? Stört es Github? Haben sie eine offizielle Richtlinie angegeben?

Leopd
quelle
5
Was passiert, wenn der Autor seine Dateistruktur neu ordnet? Es ist nicht sein Problemcode auf Hunderten von Websites.
Raynos
2
@ Raynos Wenn Sie der "Autor" des GitHub-Repos sind, steuern Sie die Änderungen.
Chris Jacob
2
@ ChrisJacob das ist der Punkt. Wenn ich meine eigene Dateistruktur ändere, ist es nicht mein Problem, dass Sie auf einen Code zeigen, der nicht mehr existiert.
Raynos
5
Sie können rawgithub.com verwenden , um in Arbeit befindliches HTML, JavaScript oder CSS für eine schnelle Demo mit jemandem zu teilen oder es möglicherweise in einem jsPerf-Test zu verwenden.
Giovanni Cappellotto
Die Frage sollte erneut geöffnet werden, da der obige Kommentar von @GiovanniCappellotto jetzt eine richtige Antwort enthält.
Supersharp

Antworten:

93

Sie sollten dies nicht für JavaScript-Dateien tun, wenn Sie Wert auf Leistung oder IE9-Kompatibilität legen.

GitHub liefert seine "rohen" Dateien nicht mit einem in Zukunft ablaufenden Header. Ohne die Möglichkeit des Cross-Site-Caching verlieren Sie den größten Vorteil der Verwendung eines öffentlichen CDN zum Hosten Ihres JavaScript. Tatsächlich ist die Verwendung von GitHub als CDN langsamer als das einfache Hosten der Dateien auf Ihrem eigenen Server nach der ersten Anforderung jedes Benutzers für die Datei (vorausgesetzt, Sie konfigurieren das Caching auf Ihrem Server korrekt).

Ein weiteres Problem ist, dass GitHub keine "Roh" -Dateien mit einem Inhaltstyp-Header bereitstellt, der dem tatsächlichen MIME-Typ der Datei entspricht. In IE9 (und möglicherweise in anderen Browsern / Proxys / Firewalls / usw.) werden JavaScript-Dateien, die nicht mit dem richtigen Inhaltstyp bereitgestellt werden, standardmäßig blockiert. Sie können dies in Aktion auf der BlockUI-Demoseite sehen, zum Beispiel:

Geben Sie hier die Bildbeschreibung ein

Dave Ward
quelle
10
Außerdem ... "Wenn Sie die Rohdatei so anfordern, greifen Sie nicht direkt vom Dateisystem auf die Datei zu! Sie durchlaufen auch Schichten von Anwendungscode, was Ihre Site definitiv verlangsamen wird. Tun Sie das nicht Erstellen Sie stattdessen einen Gh-Pages-Zweig und laden Sie ihn von dort "- viatropos.com/blog/github-as-a-cdn
Chris Jacob
RawGit liefert Rohdateien direkt von GitHub mit geeigneten Content-Type-Headern. Verwenden Sie ein bestimmtes Tag oder einen bestimmten Commit-Hash in der URL (kein Zweig). Dateien werden basierend auf der URL permanent zwischengespeichert. rawgit.com
Kerem Baydoğan
11

Dies wurde kürzlich in den Support-Foren von Github gefragt , und die offizielle Antwort war, dass es in Ordnung ist .

Trotzdem stimme ich anderen Antworten zu: Github war nie wirklich als CDN gedacht , während Google und Microsoft dafür eine spezifische Infrastruktur haben.

Mauricio Scheffer
quelle
7
Zu klären. Diese Antwort des Support-Forums bezieht sich auf den Artikel, auf den ich in meiner Antwort verlinkt habe (GitHub-Seiten als CDN - keine GitHub-Rohdateien): stackoverflow.com/questions/5502540/… ).
Chris Jacob
10

Es ist in Ordnung für Prototyping / persönliche Sachen, aber für die Produktion würde ich mir Folgendes ansehen:

http://www.cdnjs.com/

http://cachedcommons.org/ - nicht mehr verfügbar

meleyal
quelle
Ich hoffe, Sie wissen, dass CachedCommons.com nur von github.com
ocodo
Aber die URLs scheinen auf CachedCommons zu verweisen. Cachedcommons.org/cache/mootools/1.2.4/javascripts/mootools.js könnte ein Proxy sein, denke ich.
Meleyal
Entschuldigung, ich meine, die alten Informationen über die Verwendung von Github als CDN gelten anscheinend nicht mehr und es ist alles gut. Abgesehen von möglichen Verfügbarkeitsproblemen in der Zukunft lohnt es sich, eine Bibliothek zu erstellen, um dies zu vermeiden.
ocodo
2
Es sieht so aus, als ob eine Verknüpfung mit Github bald keine Option mehr sein wird: github.com/blog/…
meleyal
1
Eigentlich ist das kein Problem. Wenn Sie eine GitHub-basierte Ressource als CDN verwenden möchten, stellen Sie einfach sicher, dass sie als Teil einer statischen Seiten-Site (jetzt GitHub.io) gehostet wird erster Platz übrigens.
ocodo
-2

Ich mache es jetzt seit Monaten, hatte zuerst einige Bedenken, aber es ist total cool, wenn Sie keine Probleme damit haben, dass Ihre Dateien öffentlich verfügbar sind. Verwenden Sie minimierte Versionen, wenn Sie sich interessieren.

Aber dennoch - Google & MS regieren den Speicherplatz für jQuery & jQuery-Vorlagen - also verwende ich sie dafür.

Ezmilhouse
quelle