Was ist der Vorteil, wenn statische Ressourcen auf einer separaten Domain gehostet werden?

24

Ich stelle fest, dass viele Websites ihre Ressourcen auf einer von der Hauptwebsite getrennten Domain hosten, z. B. StackExchange mit sstatic.net, Barnes & Noble mit imagesbn.com usw.

Ich verstehe, dass es Vorteile bringt, Ihre statischen Ressourcen auf einem separaten Host zu platzieren, möglicherweise mit einem effizienten Webserver für statische Dateien wie nginx, der den Hauptserver für die Bereitstellung dynamischer Inhalte frei macht. Ebenso ist das Auslagern auf ein freigegebenes CDN wie Cloudfront Akamai logisch.

Was ist der Vorteil, wenn Sie ansonsten eine separate Domain verwenden? Warum sstatic.net statt static.stackexchange.com?

Update : Mehrere Antworten verfehlen die Kernfrage. Ich verstehe, dass die Aufteilung auf mehrere Hosts von Vorteil ist - parallele Downloads, schlankere Webserver usw. Aber was noch schwerer fällt, ist, warum mehrere Domains . Warum sstatic.net statt static.stackexchange.com als Host für gemeinsam genutzte Ressourcen? Bisher hat sich nur eine Antwort damit befasst.

Michael Ekstrand
quelle

Antworten:

22

Auf vielen Websites sind sehr viele Cookies gesetzt. Diese Cookies haben den Zweck, einen bestimmten Status zu unterstützen.

Indem Sie die statischen (zustandslosen) Ressourcen in einer völlig anderen Domäne ablegen, können Sie die Größe der http-Anforderungen reduzieren. In einigen Fällen gibt es so viele Cookies, dass eine einzelne http-Anforderung zwei zu übertragende TCP-Pakete benötigt. Eine separate Domain ist eine der Möglichkeiten, die Anzahl der Pakete zu reduzieren, um die verschiedenen Teile einer Seite anzufordern.

Andere Methoden mit demselben Ziel sind das Zusammenführen vieler Bilder in einem einzelnen Sprite und das Zusammenführen aller Javascript-Dateien in einer einzelnen Datei.

Niels Basjes
quelle
23

Neben der Verwendung von CDNs bedeutet die Verwendung separater Domänen für statische Daten auch Folgendes:

  1. Sie können einen schlanken Webserver verwenden, der nicht alle Module / Erweiterungen laden muss, die Ihr Webserver für dynamische Inhalte bei jeder einzelnen Anforderung laden muss. Wenn nicht jedes Verzeichnis im URI-Pfad durchsucht werden muss, um .htaccess-Dateien zu lesen, erhöht sich auch die Anzahl der gleichzeitigen Anforderungen, die der Server verarbeiten kann.

  2. Durch Hinzufügen einer zusätzlichen Unterdomäne erhöhen Sie die Anzahl der parallelen Downloads, die der Browser ausführen kann.

  3. Bei ordnungsgemäßer Einrichtung (z. B. wird Ihre Website nicht auf gehostet, www.example.comsondern auf example.com) können Sie auch eine Subdomain ohne Cookies nutzen, um den Datenverkehr und die Roundtrip-Zeiten zu reduzieren.

Der einzige Nachteil ist, dass Sie bei Verwendung von SSL-Sitzungen ein signiertes Zertifikat und eine separate statische IP-Adresse für die zusätzliche (n) Domain (s) benötigen. Die Vorteile überwiegen jedoch in den meisten Fällen.

Bearbeiten:

Entschuldigung, ich habe Ihre Frage falsch verstanden. Wenn Sie sich fragen, warum manche Benutzer separate SLDs verwenden, wird dies durch die Klammer auf # 3 beantwortet. Es wird auch auf sstatic.net erklärt :

Wenn Ihre Domain www.example.org ist, können Sie Ihre statischen Komponenten auf static.example.org hosten. Wenn Sie jedoch auf der Top-Level-Domain example.org im Gegensatz zu www.example.org bereits Cookies gesetzt haben, enthalten alle Anfragen an static.example.org diese Cookies. In diesem Fall können Sie eine neue Domain kaufen, Ihre statischen Komponenten dort hosten und diese Domain frei von Cookies halten. Yahoo! Verwendet yimg.com, YouTube verwendet ytimg.com, Amazon verwendet images-amazon.com und so weiter.

Aber inkarnate erwähnt auch einen guten Punkt in Bezug auf die Verwendung einer separaten generischen SLD anstelle einer Unterdomäne einer vorhandenen SLD, wenn Sie ein großes Netzwerk von Sites betreiben, die bestimmte Ressourcen gemeinsam nutzen.

Wie Niels Basjes ausführt, besteht ein Grund für das Eliminieren von Cookies darin, die Anzahl der für die Ausführung einer Anfrage verwendeten Pakete zu minimieren. Ich denke, dass die YSlow-Richtlinien besagen, dass die meisten Netzwerke eine maximale Paketgröße von 1500 Bytes haben. Wenn Sie diese also unter 1500 Bytes halten, würde sich der TCP-Overhead verringern. Dies zeigt auch einen weiteren Vorteil der Verwendung sstatic.netanstelle von static.webmasters.stackexchange.com.

Majestätsbeleidigung
quelle
Warum brauchst du eine separate IP?
Mihalis Bagos
2
Weil die Verschlüsselung traditionell angewendet wird, bevor der Domainname gesendet wird. SNI , das dies behebt, wird noch nicht allgemein unterstützt - Sie würden IE unter XP ausschließen.
Phihag
@Mihalis: Nur um den Kommentar von phihag zu ergänzen, würden Sie auch Windows Mobile 6.5 und älter, Android 2.x und älter, Blackberry Browser, Safari auf XP ausschließen ... Die vollständige Liste der unterstützten / nicht unterstützten Software finden Sie hier : en.wikipedia.org/wiki/Server_Name_Indication#No_support
Lèse majesté
3
Ich frage nicht, warum ich mehrere Subdomains verwenden soll - das macht für mich Sinn. Ich frage nach separaten vollständigen Domains. Warum sstatic.net statt static.stackexchange.com?
Michael Ekstrand
5

Lèse majesté ging auf die Hauptpunkte ein, aber um es weiter auszudehnen, möchte ich hinzufügen, dass eine einzige Domain für alle verschiedenen Stack Exchange-Sites bedeutet, dass jemand, der sie durchsucht, statische Inhalte wie JavaScripts nur einmal herunterlädt. Wenn Sie beispielsweise zum Superuser wechseln, verwendet ein Benutzer den zwischengespeicherten Inhalt, da er sich an derselben Stelle befindet.

Es gibt einige weitere nützliche Informationen zu Yahoo und Google .

John C
quelle
5

Der Hauptgrund sind Cookies. Was Niels in seiner Antwort vorschlug, ist nur eine geringe Konsequenz und nicht der wahre Grund. Ohne Cookies ist die Anforderungsgröße kleiner, sodass Bandbreite gespart wird.

Der eigentliche Unterschied liegt jedoch im Browser-Cache. Da der Inhalt statisch ist (dh sich nicht ändert), können Browser ihn auf der lokalen Festplatte zwischenspeichern und vermeiden, dass die Datei jedes Mal aus dem Internet geladen wird. Anstelle der gesamten Datei sendet der Webserver nur eine Antwort 304, was bedeutet, dass sich der Inhalt nicht geändert hat.

Wenn die Site Cookies verwendet, sind Browser der Ansicht, dass der Inhalt der Datei für verschiedene Benutzer unterschiedlich sein kann, sodass diese Dateien nicht zwischengespeichert werden. Durch die Bereitstellung der Datei aus einer Domäne ohne Cookies wird sichergestellt, dass das Browser-Caching ordnungsgemäß funktioniert.

Dies ist der Hauptgrund, da dadurch die Ladezeiten verkürzt und die Bandbreite erheblich reduziert wird.

Milan Babuškov
quelle