Von Google jQuery gehostete Bibliothek - ist das gut?

14

Gibt es einen WIRKLICHEN spürbaren Vorteil bei der Verwendung der von Google jQuery gehosteten Bibliothek? Oder laden wir es einfach auf unseren Server herunter?

Wie ist Ihre Meinung dazu?

Löwe
quelle
1
Eine einfache Google-Suche hätte die Antwort geliefert ...
Francisco Presencia

Antworten:

18

Die Verwendung eines externen CDN wie Google zum Hosten von jQuery bietet zwei wesentliche Vorteile:

  1. Es ist schneller. Es wird sicherlich schneller sein als Ihre Website und wahrscheinlich auch schneller als jedes CDN, das Sie selbst eingerichtet haben.
  2. Möglicherweise ist es bereits zwischengespeichert . Viele Websites verweisen auch auf jQuery auf Googles CDN. Wenn sie also eine andere Website besucht haben, müssen sie diese nicht einmal herunterladen.

Mögliche Nachteile:

  1. Die Domäne kann blockiert werden (dies ist durchaus üblich , in Orten wie China). Sie können dieses Problem lösen, indem Sie ein lokales Fallback verwenden ( siehe hier, wie ).
  2. Die Fragmentierung der Versionsnummern ist recht hoch, sodass Besucher Ihrer Website möglicherweise viele verschiedene Versionen im Cache haben, aber nicht die, auf die Sie verwiesen haben ( siehe hier für einige aktuelle Statistiken ). Dies ist jedoch nur ein Problem beim Laden der ersten Seite.
Verärgerte Ziege
quelle
3
Können Sie eine Referenz für das Einrichten eines lokalen Fallbacks veröffentlichen?
Stephen Ostermiller
1
Ein weiterer Vorteil von Zistolen besteht darin, dass andere Assets parallel zu Ihren Websites heruntergeladen werden. Vielleicht möchten Sie das auch zu dieser ansonsten großartigen Antwort hinzufügen.
Nathanangiesbrecht
Das ist ein bisschen irreführend. Browser laden Assets parallel herunter, unabhängig davon, wo sie gehostet werden. Die Anzahl der Dinge, die sie gleichzeitig vom selben Host herunterladen, ist jedoch begrenzt.
Tim Fountain
Ich habe das übersprungen, da es ehrlich gesagt weder hier noch da ist - die Datei kann parallel heruntergeladen werden, aber es ist auch eine zusätzliche DNS-Suche. Außerdem ist der Zeitunterschied, den diese beiden Faktoren verursachen, sowieso vernachlässigbar.
DisgruntledGoat
Meinetwegen. Kann es aber bei schnellen Verbindungen nicht zu einer schnelleren Gesamtladezeit kommen, da mehr von der "Rohrleitung" verwendet werden kann?
Nathanangiesbrecht
11

Ein weiterer Nachteil:

Durch die Verwendung eines CDN kann der Betreiber des CDN die Besucher der Website verfolgen. Deshalb kosten sie kein Geld.

Jost
quelle
Sicher verfolgen, aber keine Besucher: Sowohl das jquery-eigene als auch das google-jquery-CDN werden auf Domains gehostet, die keine Cookies setzen oder verwenden (dies ist wahrscheinlich auch eine Leistungsoptimierung), und die Anfrage enthält keine wirklich identifizierbaren Informationen. Der CDN-Anbieter kann sich einen Überblick über IP-Adressen und einige Statistiken zu Zeichenfolgen und Verweisen von Benutzeragenten verschaffen. Dies ist wahrscheinlich wertvoll, stellt jedoch an sich kein großes Datenschutzrisiko dar. (Wenn diese Datensätze mit einer anderen Datenbank korreliert sind, beispielsweise mit personalisierten Anzeigen, die zu ähnlichen Zeiten geliefert werden, kann dies möglicherweise ein Mittel zur Nachverfolgung sein.)
Eamon Nerbonne
Ich denke, dass es eine Selbstverständlichkeit ist (im Fall von Google), dass die Daten mit anderen Datenbanken korreliert sind, da fast jeder Google verwendet, um die ganze Zeit zu suchen. Dasselbe gilt für Google-Schriftarten: Ich habe kürzlich versucht, die Schriftarten auf einem Server selbst zu hosten, habe jedoch festgestellt, dass dies sehr schwierig ist. Google verbietet es nicht (Open Source), stellt Ihnen die Dateien jedoch nicht gebrauchsfertig zur Verfügung: Sie können sie entweder selbst kompilieren (es gibt jedoch kein Makefile) oder Sie können Anfragen an die fälschen Server, die für die normale Zustellung verwendet werden. Beide sind für einen Nicht-Techniker nicht machbar.
Jost
Vielleicht. Ich habe keine Insider-Informationen, daher ist es schwer, dies mit Sicherheit zu sagen. Ich bin mir jedoch sicher, dass es fehlerhaft sein und erhebliche Lücken aufweisen wird: Die meisten Orte, an denen ich das Internet benutze, sind NAT-fähig, und einige haben nicht wenige Benutzer mit ähnlichen Maschinen (wahrscheinlich identische UA-Zeichenfolgen) - es wäre unmöglich zu wissen, welche Anfrage kommen von wem. Und natürlich haben sie mit Adsense- und Social-Sharing-Knöpfen fast immer ein zuverlässigeres Mittel, sodass ich mir vorstellen kann, dass sie sich nicht darum kümmern. Was die Schriftarten angeht - ich habe diese mehrmals heruntergeladen, verstehe also nicht ganz, was Sie damit meinen, dass dies schwierig ist?
Eamon Nerbonne
Um es klar auszudrücken: Ich gehe davon aus, dass die Mehrheit der von Ihnen getätigten Website-Besuche von den großen Statistik-Sammlern mithilfe von Social-Sharing-Schaltflächen (ziemlich weit verbreitet) und Anzeigen verfolgt werden kann und wird, die praktisch überall zu finden sind. Ich frage mich nur, wie wertvoll möglicherweise irreführende Informationen aus stark zwischengespeicherten JS-Anfragen sind - ich wette, nicht sehr, daher gehe ich davon aus, dass sie nicht versuchen, Personen mit von CDN bereitgestellten JS persönlich zu identifizieren.
Eamon Nerbonne
Es ist nicht so zwischengespeichert, wie man denkt. Wenn Sie Schriften so einbetten, wie es Google bevorzugt, indem Sie einen CSS-Link zu fonts.googleapis.com einfügen, öffnet jede einzelne Seitenansicht eine Verbindung zu Google (Sie können sie in Firebug sehen). Egal ob zwischengespeichert oder nicht. Was den Download betrifft: Können Sie mich auf einen Ort verweisen, an dem ich die Schriftarten in den Formaten eot, woff, ttf und svg in hoher Qualität herunterladen kann (dieselben Versionen, die Google liefert, keine externen Konverter)?
Jost
3

Die Verwendung von CDNs, um Ihre Abhängigkeiten zwischen vielen Servern wie diesen zu schützen, stellt im Wesentlichen einen Kompromiss zwischen Bandbreite und Latenz dar, vorausgesetzt, Sie kümmern sich nur um die Leistung.

Ich gehe im Übrigen davon aus, dass die Alternative nicht einfach darin besteht, sie lokal zu hosten, sondern sie mit einer anderen lokalen Anforderung zu verketten - normalerweise gibt es keinen guten Grund, sie nicht zu verketten, wenn Sie können.

Wenn die Bandbreite unendlich ist, sollten Sie NICHT sharden, da Sie genauso langsam sind wie Ihr langsamster Service. Da die Latenzen nicht genau vorhersehbar sind und genügend Services zur Verfügung stehen, benötigen Sie nur ein Bit, auch wenn diese schnell sind von Pech, ein langsames Laden der Seite zu verursachen.

Wenn die Latenz 0 ist, kann die Verteilung Ihrer Last auf mehrere Server die Bandbreite durch die Auslastung vieler Server verbessern (nicht hilfreich, da die Bandbreitenbeschränkungen wahrscheinlich in der Nähe der Clients und nicht der Server liegen). Noch wichtiger ist jedoch, dass die übertragene Datenmenge reduziert werden kann leicht durch Erhöhen der Wirksamkeit des Cachings.

Es hängt von Ihrem Szenario ab, aber ich würde allgemein erwarten, dass die Latenz ein größeres Problem als die Bandbreite darstellt, es sei denn, Ihre Skripte sind wahnsinnig umfangreich (was jquery nicht ist). Zu diesem Zeitpunkt ist es normalerweise schneller, jquery als Teil einer verketteten lokalen Datei zu hosten.

Gründe, nicht lokal zu hosten, sind z. B., wenn Sie für Bandbreite bezahlen oder wenn Sie auf einem langsamen Server hosten (Ihre Verbindung zum Client ist auf Ihrer Seite und nicht auf der des Clients eingeschränkt) oder wenn Sie wissen, dass Ihre Clients eine wirklich niedrige Bandbreite haben (z. B. Low-End-DSL oder Modems - Mobilgeräte haben tendenziell mehr Latenzprobleme als Bandbreitenprobleme) oder Ihre Kunden zahlen für Bandbreite (z. B. Mobilgeräte), und Skripts sind ein so auffälliger Teil dessen, dass geringfügiges Caching eine Rolle spielt (unwahrscheinlich) ).

In jedem Fall ist es wesentlich relevanter, ob Sie zuerst die Grundlagen behandelt haben. geeignete Caching-Header, Verkettung, Minimierung und Gzipping (vorzugsweise mit einem hohen Komprimierungsverhältnis). Und hier ist der springende Punkt: Wenn du das NICHT tust, wird es zumindest das CDN tun, also ist das der Gewinn ...

TL; DR: Wenn Sie Verkettung + Minifizierung + Gzipping + Caching haben, ist das lokale Bereitstellen kleiner Skripte trotz der besseren Leistung des CDN schneller als von einem CDN aus - aber nur, wenn Sie Ihre Hausaufgaben erledigt haben, möglicherweise nicht auf der ersten Seite laden, und es gibt definitiv Ausnahmen von dieser Regel.

Eamon Nerbonne
quelle
Übrigens gibt es einige Byte-Späne, die mit nur einer Anfrage gewonnen werden: Header allein belaufen sich auf fast 1 KB, was bei einer Nutzlast von 28 KB nichts ist. gzip funktioniert besser mit mehr Kontext, wodurch weitere 0,5 KB gespart werden. TCP-, DNS- und HTTPS-Overheads können hier oder da ganz einfach eine KB hinzufügen, und schlimmer noch, RTTs. Aus diesem Grund ist eine CDN für kleine Dateien wie diese nicht so schnell, wie Sie vielleicht denken.
Eamon Nerbonne
1

Durch die Verwendung der von Google gehosteten jQuery-Bibliothek kann Ihre Seite schneller geladen werden. In der Tat wird die Bibliothek zur selben Zeit wie Ihre Seite anstatt nachher geladen.

Zistoloen
quelle
Aber wie wirkt es sich auf das Laden der Seite aus?
Leo
1
Lokale Bibliotheken werden auch geladen, während die Seite geladen wird - In beiden Fällen beginnt der Download des Assets, wenn der (moderne) Browser das Code-Snippet sieht, das den Download auslöst, was normalerweise vor dem Herunterladen des gesamten Dokuments geschieht. Ein Beispiel finden Sie in diesem Firebug-Screenshot
Jost