Nachdem wir uns mit der Komprimierung und dem Cachen von Webseiten befasst haben, wollen wir ein weiteres Peformance-Thema ansprechen. In den bekannten Performance-Analyse-Werkzeugen heißt es:
Googles PageSpeed: Serve static content from a cookieless domain
Yahoos YSlow: Use a Content Delivery Network (CDN)
Hintergrund ist: liegen dynamische Daten und statische Daten (z. B. Bilder) auf der gleichen Domain sendet der Browser bei jeder Anfrage die Cookies der Domain mit. Statischer Content braucht aber keine Cookies, also heißt es auslagern auf eine cookieless domain.
Wir haben den Artikel von Frank Bültge über Eigenes CDN in WordPress nutzen gelesen. Sehr schöner Artikel Frank. Bisher haben wir es mit dem selben Gedanken über Subdomains aber etwas undynamischer gelöst. Mal schauen wie wir es die nächsten Wochen weiter optimieren können. Aber erstmal stellen wir jetzt unsere bisherige Lösung vor:
Wie erwähnt haben wir auch den Uploads Ordner, der zur Mediathek von WordPress gehört, auf einer Subdomain ausgelagern. Dafür haben wir eine Subdomain angelegt (subdomain.example.org) und dort einen Ordner "uploads" mit den üblichen CHMOD-Rechten 777 anlegen. Dorthin wurde dann der ganze Inhalt des urspünglichen Upload Ordner verschoben.
In den Mediathek-Einstellungen haben wir dann den "Ordner-Pfad" auf den statischen Serverpfad geändert und den "Kompletter Pfad zu den Dateien" auf die URL geändert, z.B.
Uploads in folgendem Ordner speichern: /srv/www/htdocs/html/uploads
Kompletter Pfad zu den Dateien: http://subdomain.example.org/uploads
Dann müssen wir allerdings in der Datenbank die Einträge in der Tabelle "wp_posts" ändern, genauer dort die Felder "post_content" und "guid". Das kann mit folgenden zwei "Replace" (ersetzen) SQL-Befehlen erledigt werden:
UPDATE wp_posts SET post_content = replace(post_content, 'http://www.example.org/wp-content/uploads/', 'http://subdomain.example.org/uploads/');
UPDATE wp_posts SET guid = replace(guid, 'http://www.example.org/wp-content/uploads/','http://subdomain.example.org/uploads/');
Somit hätten wir dann alle Mediatheken Bilder auf der Subdomain liegen und sie werden von dort abgerufen.
Als zweiten Schritt sind wir her gegangen und haben alle Bilder aus dem Theme (Images Ordner im Theme Ordner) auch auf die Subdomain in einen Images Ordner verschoben. Danach nur noch alle Templates des verwendeten Themes (style.css, header.php, footer.php, functions.php etc.) auf den korrekten Pfad ändern. Statt bloginfo() müssen dann die statischen Pfade angegeben werden.
Aus z. B.
src="<?php bloginfo('template_url'); ?>/images/
wird dann
src="http://subdomain.example.org/images/
Wie Frank auch in seinem Artikel schreibt, hat Google (PageSpeed) damit keine Probleme und hakt es im besten Fall mit der Note "A" ab. Leider verlangt Yahoo (YSlow) wohl nach einem "echten" CDN.
Nachdem ich nun einige Tage meine Bilder per CDN geladen hab,e mußte ich leider feststellen, das die Ladezeiten sich verdoppelt hatten.
Wahrscheinlich hilft das CDN nur dann wirklich wenn man seinen Server nicht optimal konfiguriert hat bzw. nicht die Möglichkeit dazu hat.
Danke für das Lob, gebe ich gern zurück.