Vorteile vs. Fallstricke beim lokalen Hosting von jQuery [geschlossen]

83

Derzeit ziehen wir jQuery- und jQueryUI-Bibliotheken (und jQueryUI-CSS-Bibliotheken) aus dem Google CDN. Ich mag das, weil ich anrufen kann google.load("jquery", "1");
und die neueste jQuery 1.xx verwendet wird.

Jetzt soll ich die Bibliotheken aus Sicherheitsgründen lokal abrufen.

Ich bin glücklich, sie vor Ort zu ziehen, aber ich frage mich, auf welche anderen Vorteile und Fallstricke ich achten muss.

orolo
quelle
5
Über welche Sicherheitsprobleme sprechen wir?
Ascherer
Ich habe nicht gefragt. Ich vermute, es ist nicht so sehr Sicherheit, sondern der Versuch, die Bandbreite durch Firewalling von Google Mail usw. zu kontrollieren
orolo

Antworten:

107

Der Hauptvorteil eines CDN besteht darin, dass die Dateien parallel zu den von Ihrer eigenen Website heruntergeladenen Dateien heruntergeladen werden können. Dies reduziert die Latenz auf jeder Seite. Die Kehrseite davon ist also die Gefahr, lokal zu hosten - erhöhte Latenz . Der Hauptgrund dafür ist, dass die Anzahl der Verbindungen, die Browser gleichzeitig zu derselben Webdomäne herstellen können, begrenzt ist. In IE6 wurden standardmäßig 2 gleichzeitige Verbindungen zu derselben Domäne verwendet, die von allen geöffneten Fenstern des IE gemeinsam genutzt werden !!In IE8 + wurde es verbessert und standardmäßig auf 6 gesetzt, was mit FF / Chrome übereinstimmt. Wenn Sie jedoch viele Bilder haben und keine Sprites verwenden, tritt eine hohe Latenz auf.

Bei Verwendung eines CDN würde ich die Bibliotheksversion immer explizit festlegen, anstatt die neueste zu erhalten. Dies verringert das Risiko, dass neue Versionen Ihren Code beschädigen. Nicht sehr wahrscheinlich mit jQuery, aber möglich.

Der andere Hauptvorteil der Verwendung eines CDN ist die Reduzierung des Datenverkehrs auf Ihrer Website . Wenn Sie pro GB zahlen oder sich auf einem virtuellen Server mit begrenzten Ressourcen befinden, kann es vorkommen, dass die Gesamtleistung der Website steigt und die Hostingkosten sinken, wenn Sie einen Teil Ihrer Inhalte auf ein öffentliches CDN übertragen.

Stellen Sie sicher, dass Sie auch die andere Antwort auf diese Frage von @Xaver lesen. Das ist ein sehr guter Trick

Daniel Dyson
quelle
5
Ein weiterer Vorteil des expliziten Festlegens der Bibliotheksversion besteht darin, dass Google eine längere Cache-Zeit benötigt. Wenn Sie beispielsweise 1.9.1 angeben, wird die Cache-Lebensdauer länger als nur das Anfordern von 1.9 (da möglicherweise eine neue jQuery 1.9-Version veröffentlicht wird, 1.9.1 jedoch immer das Gleiche).
Barry
uhhh - revaxarts ? Ich sehe keine solche Antwort, weder aktuell noch gelöscht. Was ist der "sehr gute Trick"?
Ashleedawg
142

Ich benutze immer das CDN (Content Delivery Network) von Google. Aber nur für den Fall, dass es offline ist:

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

Holen Sie sich die jQuery von Google CDN und greifen Sie bei Bedarf auf local zurück

Bearbeiten : Wenn Sie IE6 nicht unterstützen müssen und Ihre Site teilweise https verwendet, können Sie auch das http entfernen:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
Xaver
quelle
4
Gutschrift an die Gemeinschaft: stackoverflow.com/questions/1014203/…
oucil
23
XVIDEOS verwendet diese Lösung jetzt: P
Shougo Makishima
Ich muss hier etwas vermissen ... Geht dieser Ansatz nicht davon aus, dass die CDN-geladene jQuery geladen und interpretiert wird, bevor die nächste Zeile ( !window.jQuery...) interpretiert wird? <script>Tags werden asynchron verarbeitet, oder?
Rinogo
2
<script>Tags werden synchron verarbeitet! In der zweiten Zeile muss jQuery bereits geladen sein, aber nur für den Fall, dass wir nicht etwas JS injizieren, um es lokal zu laden. Das document.writewird niemals ausgeführt, wenn jQuery bereits existiert.
Xaver
23

Andere haben die Vorteile abgedeckt. Tücken:

  • Wenn Sie nur Inhalte von Ihrem eigenen Server einbinden, muss dieser Server ausgeführt werden und darf nicht durch Firewalls usw. blockiert werden, damit Ihre Site funktioniert. Ziehen Sie ein Skript von einem Drittanbieter, und das sind nun zwei Server, die ausgeführt und entsperrt werden müssen, damit Ihre Site funktioniert.

  • Jede Site, von der Sie abrufen, <script>kann die Benutzererfahrung auf Ihrer Site vollständig steuern. Wenn Google sich böse fühlt, können sie etwas in ihre jQuery-Kopie einfügen, um Ihre Tastendrücke zu protokollieren, persönliche Informationen von der Seite zu stehlen, auf der Sie sich befinden, um sie in ihre Web-Tracking-Datenbank einzubinden, und Sie dazu bringen, "Ich liebe Google!" Kommentare zu jedem Formular und so weiter.

Google wird das wahrscheinlich nicht tun, aber es ist ein Faktor, den Sie nicht kontrollieren können, und sicherlich ein Grund zur Sorge bei anderen Skript-Hosting-Diensten. Es gab bereits Vorfälle, in denen Statistikskripte mit Malware-Loadern kompromittiert wurden.

Bevor Sie ein Skript eines Drittanbieters einfügen - auch nicht auf einer einzelnen Seite Ihrer Website -, müssen Sie diesen zu 100% alle auf den Benutzer zugänglichen Funktionen anvertrauen, die auf diesem Hostnamen sichtbar sind (einschließlich der Web-Administrationsfunktionen).

Bobince
quelle
21
Google würde das nicht tun ... ICH LIEBE GOOGLE ... oder? :-p
JasCav
1
Hervorragende Punkte in Bezug auf Sicherheitsprobleme.
Naltroc
6
Lösung zu Punkt 2
MayorMonty
1
Gute Punkte: Ich habe nie darüber nachgedacht, wie ein Remote-CDN-Skript gehackt und dann auf meine Website heruntergeladen werden kann. Wahrscheinlich nicht üblich für große Bibliotheken wie jQuery, jQueryUI, Boostrap usw., aber wie bereits erwähnt, könnten kleinere, weniger unterstützte Bibliotheken Opfer werden, insbesondere wenn sie nicht auf dem neuesten Stand gehalten werden. Gute Punkte +1
twknab
13

Google CDN:

  • Caching, gut für die Leistung, mehr Benutzer haben es wahrscheinlich bereits und es wird parallel heruntergeladen
  • Wenn überhaupt, geht Heaver Forbid CDN aus. Du bist beschissen.
  • Wenn eine neue Version Ihre vorhandenen Plugins oder Websites beschädigt, wissen Sie möglicherweise zu spät davon

Örtlich:

  • Entwicklung ohne Netzanschluss ist möglich
  • kann zusätzlich zum Minimieren noch einige Leistungsvorteile durch Zippen erzielen
Moin Zaman
quelle
5
Die von Google CDN geladene JQuery wird jedoch minimiert. Ein weiteres Plus bei der Verwendung eines CDN ist, dass es für Ihre Verzeichnisstruktur sauberer ist :)
Ascherer
if a new version breaks your existing plugins or site, you'll know about it possibly too lateSie können die Version im CDN-Link angeben, um dies zu vermeiden.
Adam
12

Ich bevorzuge die Verwendung meiner lokalen Version, da ich keine Kontrolle darüber habe, was sie bereitstellen. Zum Beispiel möchte ich nicht, dass meine Nutzer von Google Analytics oder Ähnlichem betroffen werden, da dies in meinem Land ein rechtliches Problem darstellt.

Dr.Molle
quelle
8

Vorteile: (Speziell für Googles CDN)

  1. Downloads parallel zu Ihren Dateien. Andere Antworten sprechen dies weiter an
  2. Die Server von Google können den Inhalt wahrscheinlich schneller physisch bereitstellen
  3. Allgemeine Bibliotheken und Frameworks befinden sich möglicherweise bereits auf dem Computer des Benutzers, da der HTTP-Cache für ein CDN universell ist alle Standorte
  4. Ihre Bandbreite müsste nicht für die Bereitstellung großer Bibliotheksdateien verwendet werden
Praveen Prasad
quelle
2

Praktisch in jeder Hinsicht ist die Verwendung von Googles CDN eine gute Sache.

Die Leistung wird verbessert (wenn auch nur geringfügig, es sei denn, Ihre Site ist wirklich ausgelastet), und die Datenmenge, die Ihre Server übertragen müssen, wird sinken (obwohl jQuery nicht gerade massiv heruntergeladen werden muss) usw.

Der einzige Grund, warum Sie es nicht verwenden möchten, ist, wenn Sie Google nicht vertrauen. Durch die Verwendung geben Sie Google effektiv ein zusätzliches Informationsfenster in das Verkehrsprofil Ihrer Website ein, einschließlich der Kenntnis von URLs, die Sie ansonsten möglicherweise nicht veröffentlichen möchten (z. B. sichere Bereiche Ihrer Website).

Wenn Sie in Bezug auf Sicherheit paranoid sind, kann dies ausreichen, um Sie davon zu überzeugen, sie nicht zu verwenden (schließlich wird das Hosting selbst Ihre Website nicht gerade zum Crawlen verlangsamen), aber im Allgemeinen würden die meisten Leute die pragmatische Ansicht vertreten dass Google bereits genug über seine Website weiß, dass das Hinzufügen dies keinen großen Unterschied macht.

Spudley
quelle
1

Wahrscheinlich bin ich heutzutage in der Minderheit, aber ich würde sagen, dass Sie CDN nicht verwenden möchten, es sei denn, Sie müssen es wirklich. Schlüsselfaktoren für die Verwendung sind:

  • Cross-Geo-Benutzer. Wenn Sie Ihre Website in den USA hosten, aber eine sichtbare Anzahl europäischer Benutzer haben, verbessert CDN die Ladezeit.
  • Große Anzahl von Benutzern und / oder großen Inhalten, sodass ein Hauptserver nicht mehr ausreicht. Man kann sich jede Porno-Video-Website vorstellen (oder Netflix, wenn Sie wollen). Videostream ist eine schwere Last, mit CDN würde der Hauptserver viel weniger belastet.

Aber ... der Punkt ist, dass diese Punkte für 90% der Websites auf der Welt nicht wirklich zutreffen. Ich wette, Sie sind nicht Facebook mit Millionen von Online-Nutzern auf der ganzen Welt, Sie sind kein Pornhub mit Hunderten von GB, die jede Sekunde übertragen werden.

Wenn Ihre Website auf Benutzer in Ihrer Stadt / Ihrem Land ausgerichtet ist und die Kapazität eines Servers für die Anzahl der Benutzer ausreicht, warum sollten Sie jemals ein CDN wünschen? Es ist für Ihre Benutzer in Ihrer Stadt schneller und für Sie einfacher, alles lokal von Ihrem Hauptserver abzurufen.


Es ging mehr um CDNs im Allgemeinen. Lassen Sie mich nun näher an der eigentlichen Frage zu jQuery oder einer anderen Bibliothek sein.

Wenn Sie möchten, dass Ihre Website länger als ein Jahr ohne Wartung zugänglich bleibt und funktioniert, sagen wir, setzen Sie sie lokal ein. Bibliotheken werden heutzutage in einem verrückten Tempo aktualisiert, dem Sie wahrscheinlich nicht folgen möchten. Und alte Versionen werden irgendwann gelöscht. Darüber hinaus kann die gesamte Bibliothek sterben (wahrscheinlich jedoch nicht für jQuery).

Aufgrund meiner jüngsten Erfahrungen habe ich TinyMCE auf der von mir gepflegten Website von 3.xx (vom 2012) auf 5.xx (vom Frühjahr 2019) aktualisiert. Diese Website arbeitete 7 (sieben!) Jahre ohne Wartung in diesem Teil der Logik. Damals gab es kein "Minimierungs" -Konzept und CDNs waren nicht so verbreitet wie heute. Aber selbst wenn sie häufig vorkommen würden - Sie wissen nie, was in 3-5-10 Jahren passieren wird. Normalerweise möchten Sie, dass Ihre Website auch ohne Wartung erhalten bleibt, oder? Wenn Sie jedoch heute jQuery von CDN abrufen, kann (und wird) dieser Link in 5 Jahren unterbrochen werden.

Eine Lösung mit CDN UND ein Fallback auf die lokale Version, wie von @Xaver vorgeschlagen, kann ein guter Kompromiss sein. Aber ... vielleicht einfach den CDN-Link loswerden? ;)

Der Pate
quelle
0

Für mich kommt es wirklich darauf an, wie viel Kontrolle Sie haben möchten. Wenn Sie wie ich sind und sich beim Arbeiten und Reisen auf einem lokalen Gastgeber entwickeln müssen. Es ist besser, die JQuery-Dateien lokal zu haben, als sie auf Google oder anderswo zu hosten.

WebGoonie
quelle