.htaccess, YSlow und „Cookie-freie Domains verwenden“
Lesezeit: 5 Minuten
Eine der Messgrößen von YSlow ist die Verwendung von cookiefreien Domains zur Bereitstellung statischer Dateien.
“Wenn der Browser ein statisches Bild anfordert und Cookies mit der Anfrage sendet, ignoriert der Server die Cookies. Diese Cookies sind unnötiger Netzwerkverkehr. Um dieses Problem zu umgehen, stellen Sie sicher, dass statische Komponenten mit cookiefreien Anfragen angefordert werden indem Sie eine Subdomain erstellen und sie dort hosten.” — Yahoo YSlow
Ich interpretiere das so, dass ich Leistungssteigerungen erleben könnte, wenn ich mich bewege www.example.com/images zu static.example.com/images.
Obwohl dies einfach ist, würde ich die praktische Möglichkeit in meinem Content-Management-System (Joomla/WordPress) verlieren, diese Bilder einfach zu referenzieren und zu verlinken.
Ist es möglich, .htaccess zu verwenden, um alle Anfragen für einen bestimmten Ordner weiterzuleiten? www.beispiel.com in einen Ordner ein static.example.com stattdessen? Würde diese Methode dem CMS auch vormachen, dass sich die Bilder an den Standardspeicherorten in seiner eigenen Domäne befinden?
Es scheint Konsens zu sein, dass zwar .htaccess verwendet werden könnte, um Anfragen für www.example.com/images an static.example.com/images umzuleiten; Die Arbeitsbelastung würde die Leistung verringern. Der Leistungsgewinn tritt nur ein, wenn auf die Dateien in einer einzigen Anfrage direkt von einer cookielosen Domäne zugegriffen wird. Eine andere Idee war, ein Plugin zu verwenden, das die Referenzen dynamisch erstellt. Ich danke Ihnen allen für die Beratung.
– Jason Pearce
17. September 2009 um 12:33 Uhr
Ist es möglich, .htaccess zu verwenden, um alle Anfragen für einen bestimmten Ordner auf www.example.com stattdessen auf einen Ordner auf static.example.com umzuleiten?
Möglich, aber kontraproduktiv – der Client müsste eine HTTP-Anfrage stellen, die Umleitungsantwort erhalten und dann eine weitere HTTP-Anfrage stellen.
Das kostet viel mehr als die Speicherung einer einzigen Zeile an Cookie-Daten!
Würde diese Methode dem CMS auch vormachen, dass sich die Bilder an den Standardspeicherorten in seiner eigenen Domäne befinden?
Nein.
Obwohl dies einfach ist, würde ich die praktische Möglichkeit in meinem Content-Management-System (Joomla/WordPress) verlieren, diese Bilder einfach zu referenzieren und zu verlinken.
Sie könnten versuchen, ein Plugin in Joomla zu erstellen, das diese Referenzen dynamisch erstellt.
Sie haben beispielsweise ein Plug-in, das bei Eingabe von {dinamic_path path} in einem Artikel „static.example.com/images“ an den bereitgestellten Pfad anhängt. Jedes Mal, wenn Sie den Serverpfad ändern müssen, ändern Sie einfach das Plugin. Für die Links, die sich bereits in der Datenbank befinden, können Sie versuchen, phpMyAdmin zu verwenden, um sie in dieser Struktur zu ändern.
Es verliert immer noch die WYSIWYG-Fähigkeit in TinyMCE, ist aber eine Alternative.
Danke für die Idee GmonC, kann aber meine Fähigkeiten übersteigen. Wird die große Plugin-Bibliothek sowohl Joomla als auch WordPress haben, hatte ich leicht gehofft, dass ich bereits etwas in dieser Richtung finden würde.
– Jason Pearce
17. September 2009 um 12:27 Uhr
Sie können das Erweiterungsverzeichnis auf der offiziellen Website von Joomla durchsuchen. Es gibt ein Plugin namens “DirectPHP”, Sie könnten ein 5-zeiliges PHP-Skript schreiben und es von einem Artikel aus aufrufen. Aber ich stimme zu, dass wir manchmal nur eine bereits funktionierende Lösung wollen: Da es sich um ein CMS handelt, sollte es einige Funktionen bereits implementiert haben. Nun, viel Glück mit den anderen bereitgestellten Lösungen!
– GmonC
17. September 2009 um 12:59 Uhr
ATG Dynamo ist ein kommerzielles (und sehr teures!) Webapp-Framework, das dies tut. Sie arbeiten mit Bildern in seinem CMS, und wenn Sie Inhalte bereitstellen, kann es die Bilder auf einen dedizierten Webserver übertragen und dann die richtigen URLs auf den Seiten generieren. Es ist eine nette Idee und sicherlich nicht allzu schwer umzusetzen, daher bin ich überrascht, dass es nicht weiter verbreitet ist.
– Tom Anderson
18. Juli 2010 um 18:05 Uhr
Theoretisch könnten Sie eine virtuelle Domain erstellen, die direkt auf den Bilderordner verweist, z. B. images.example.com. Dann könnten Sie in Ihrem CMS (hoffentlich auf der Themenebene) alle Pfade, die auf den Bilderordner verweisen, durch einen absoluten Pfad zur Subdomain ersetzen.
Die Umleitungen würden weitaus mehr Netzwerkverkehr verursachen, und weit mehr Latenz, als die Dinge einfach so zu lassen, wie sie sind.
Es würde die Anfrage umleiten, aber der Client würde immer noch seine Cookies an den Server senden, also haben Sie wirklich nichts erreicht. Sie müssten direkt von einer Domain aus auf die Dateien zugreifen, die keine Cookies speichert, damit es funktioniert.
Was Sie wirklich tun möchten, ist staticexample.com/images anstelle von static.example.com/images zu verwenden, damit Sie keine Cookies auf der Domain example.com abholen, die Sie möglicherweise festgelegt haben. Wenn Sie nur Server-Images von dieser Domäne mit einem einfachen Apache-Server oder etwas anderem tun, können Sie diesen Server so konfigurieren, dass er nicht einmal ein Sitzungscookie zurückgibt.
Die Umleitungen sind eine sehr schlechte Idee. Cookies verursachen einige Leistungseinbußen, aber Roundtrips zum Server, wie sie beispielsweise eine Umleitung verursachen würde, sind ein viel schwerwiegenderes Leistungsproblem.
Es scheint Konsens zu sein, dass zwar .htaccess verwendet werden könnte, um Anfragen für www.example.com/images an static.example.com/images umzuleiten; Die Arbeitsbelastung würde die Leistung verringern. Der Leistungsgewinn tritt nur ein, wenn auf die Dateien in einer einzigen Anfrage direkt von einer cookielosen Domäne zugegriffen wird. Eine andere Idee war, ein Plugin zu verwenden, das die Referenzen dynamisch erstellt. Ich danke Ihnen allen für die Beratung.
– Jason Pearce
17. September 2009 um 12:33 Uhr