Cookieless Domain
Serve static content from a cookieless Domain
Die Aufgabe: Wir möchten im Google PageSpeed Pluging (für Firefox) einen grünen Haken mehr haben.
Warum? Es macht natürlich Spass schnellere Webseiten als andere Webmaster auszuliefern.
Was bedeutet: "Serve static content from a cookieless Domain" ?
Lade Dateien von einer Domain die keine Cookies ausliefert.
Gemeint sind Bilder, Javascripts und Css-Dateien.
Werden diese Dateien über die eigene Domain ausgeliefert, gibt es jedesmal ein Cookie mit dazu.
Das ist aber völlig überflüssig. Wozu braucht ein Bild ein Cookie? Keine Ahnung, braucht wirklich
Bilder - Javascript - Css brauchen keine Cookies
Wie bekommen wir ein relativ cookiefreies Template hin?
Mit relativ cookiefrei meine ich auch relativ. Je nach Bauart und Programmierstil der in der jeweiligen
Joomla-Komponente angewandt wird bekommen wir das gut bis richtig gut hin.
Die folgenden Schritte sind dem Schwierigkeitsgrad nach aufgelistet.
Schritt 1: Vorbereitung einer Cookieless Domain
Das Anlegen von einer Subdomain sollte in der Regel eine einfache und schnell zu erledigende Maßnahme sein.
Lets do it: Subdomain anlegen.
Am geeignetsten halte ich so Namen wie medias.romacron.de oder cdn.romacron.de, irgend einen Namen anlegen.
Die Subdomain muss auf die selbe Joomla- Seite zeigen.
Gibt man nun in die Browser- Adresstzeile die angelegte Subdomain ein, sollte die selbe Webseite angezeigt werden.
Schritt 2: Die .htaccess anpassen
Da nun eine 2. Domain auf die selbe Joomla Installtion zeigt könnte das zu Dublicate Content führen.
Dublicate Content (gleicher Inhalt mehrmals im Netz), das straft google ordentlich ab.
Kein Problem, wir erlauben über Subdomain keinen Aufruf von irgendwelchen Joomla Sachen.
Wir möchten ausschliesslich Bilder Css und Javascript über die Subdomain aufrufen.
So sieht der Part in der .htaccess aus (diese befindet sich im Joomla Root-Verzeichnis):
1 |
# vergleiche ob die angefragte Domain unsere Cookieless Domain ist |
Anpassen des Joomla-Template
Das ist der obere Teil der Template index.php im Joomla Template Ordner
| joomla-installation/templates/mein-template/index.php | |
1 |
$headerData = $this->getHeadData(); |
Erklärung: Wir lassen lesen alle Headerdaten "<head></head>" die von Joomla übergeben werden
Wir nehmen uns nur die 'scripts' und schreiben die Url auf unsere Cookieless Domain um.
An sich kann der Quellcode oberhalb noch nicht so viel. Es sollten auch die Css-Style Dateien
von der Cookieless Domain abgerufen werden.
Da lohnt es sich ein Plugin zu schreiben. Mit diesem habe ich bereits angefangen.
im nächtsten Part kommt die Datei /plugins/system/sef.php unter das Messer.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
// do the SEF substitutions $regex = '#href="/index.php\?([^"]*)#m'; $buffer = preg_replace_callback( $regex, array('plgSystemSEF', 'route'), $buffer ); $protocols = '[a-zA-Z0-9]+:'; //To check for all unknown protocals (a protocol must contain at least one alpahnumeric fillowed by : $regex = '#(src)="(?!/|'.$protocols.'|\#|\')([^"]*)"#m'; $buffer = preg_replace($regex, "$1=\"http://images.romacron.de$base\$2\"", $buffer); #$regex = '#(onclick="window.open\(\')(?!/|'.$protocols.'|\#)([^/]+[^\']*?\')#m'; #$buffer = preg_replace($regex, '$1'.$base.'$2', $buffer); $protocols = '[a-zA-Z0-9]+:'; //To check for all unknown protocals (a protocol must contain at least one alpahnumeric fillowed by : $regex = '#(href)="(?!/|'.$protocols.'|\#|\')([^"]*)"#m'; $buffer = preg_replace($regex, "$1=\"$base\$2\"", $buffer); $regex = '#(onclick="window.open\(\')(?!/|'.$protocols.'|\#)([^/]+[^\']*?\')#m'; $buffer = preg_replace($regex, '$1'.$base.'$2', $buffer); /* das Original der obereren beiden Blöcke behalten wir zur Sicherheit als Kommentar |