Hi,
scheinbar gibt es ein Problem mit Mootools und den suchmaschinenfreundlichen Contao-URLs im Stil von http://irgendwas.de/index.php/startseite/parameter1/wert1/parameter2/wert2.html, der dazu führt, dass der Browser mehrfach fälschlicherweise die Contao-Seite abruft. Ich habe auf der Seite eine aufwändige Suchroutine und durch solche mehrfache Aufrufe dadurch große Performance-Probleme.
Wichtige Anmerkung gleich vorweg: Bindet man Mootools gar nicht ein bzw. deaktiviert man JavaScript, tritt das gesamte genannte Problem überhaupt nicht auf. Natürlich ist das aber keine Lösung!
Folgendes Verhalten habe ich festgestellt:
Ruft man eine mit einer URL ohne GET-Parameter auf (also z. B. http://irgendwas.de/index.php/startseite.html), so liefert das Firefox-Plugin "Live HTTP Headers" folgenden Mitschnitt der Kommunikation mit dem Server:
Code:
GET /index.php/startseite.html
GET /system/contao.css
GET /plugins/formcheck/theme/classic/formcheck.css
GET /tl_files/system/css/reset.css
GET /tl_files/system/css/default.css
GET /tl_files/system/css/styles01.css
GET /plugins/mootools/mootools-core.js?1.2.5
GET /plugins/mootools/mootools-more.js?1.2.5.1
GET /tl_files/system/layoutImages/logo.gif
GET /tl_files/system/layoutImages/banner.gif
Das ist so natürlich richtig und funktioniert.
Jetzt kommt das erstaunliche: Ruft man die selbe Seite mit übergebenen GET-Parametern auf (also z. B. http://irgendwas.de/index.php/startseite/parameter1/wert1/parameter2/wert2.html), so werden folgende HTTP-Header mitgeschnitten:
Code:
GET /index.php/startseite/parameter1/wert1/parameter2/wert2.html
GET /system/contao.css
GET /plugins/formcheck/theme/classic/formcheck.css
GET /tl_files/system/css/default.css
GET /tl_files/system/css/reset.css
GET /tl_files/system/css/styles01.css
GET /plugins/mootools/mootools-core.js?1.2.5
GET /index.php/startseite/parameter1/wert1/parameter2/plugins/mootools/mootools-more.js?1.2.5.1
GET /plugins/mootools/mootools-more.js?1.2.5.1
GET /index.php/startseite/parameter1/wert1/parameter2/tl_files/system/layoutImages/logo.gif
GET /index.php/startseite/parameter1/wert1/parameter2/tl_files/system/layoutImages/banner.gif
Interessant sind hierbei die letzten 4 GET-Headers. Da wird vom Server zunächst das Mootools-More-Script angefragt, allerdings mit einer URL, die so ja gar nicht funktionieren kann, da sie das "index.php"-Fragment enthält und daher nicht das Skript sondern die Contao-Seite zurückgibt. Dann folgt seltsamerweise nochmal die korrekte Anfrage des Mootools-More-Scripts und dann noch zwei Anfragen für Bilder, die auch eine falsche URL haben.
Das ist jetzt nur ein Ausschnitt. Tatsächlich werden ALLE Bilder, die irgendwo im HTML-Code per <img>-Tag eingebunden sind, mit dieser falschen URL angefragt. Daraus resultiert natürlich, dass Contao jedes Mal die Seite generiert (was man natürlich nicht zu sehen bekommt) und dadurch enthaltene Routinen wie z. B. Suchfunktionen mehrfach ausführt. In meinem Fall speichere ich z. B. auch die per GET übertragenen Parameter in der Session, was aber natürlich auch zum Scheitern verurteilt ist, da bei den seltsamen Bild-Aufrufen die auszuwertenden Parameter falsch sind.
Der Aufruf von "/index.php/startseite/parameter1/wert1/parameter2/tl_files/system/layoutImages/logo.gif" ergibt ja logischerweise in Contao das Generieren der Seite "startseite" und Contao wertet die restliche URL als GET-Parameter folgendermaßen aus:
$_GET:
'parameter1' => 'wert1'
'parameter2' => 'tl_files'
'system' => 'layoutImages'
'logo' => ''
Ich hoffe, das Problem kommt verständlich rüber. Ich habe jetzt schon einen vollen Tag gebraucht, um es soweit analysieren zu können...
Hat irgendjemand einen Ansatz, wie man das korrigieren kann? Ich bin mir recht sicher, dass das Problem nicht auftritt, wenn man in Contao nicht mit Aliasen und stattdessen mit gewöhnlichen URLs im Stil von "http://irgendwas.de/index.php?paremter1=wert1¶meter2=wert2" arbeitet, aber das ist für mich keine Lösung, da ich die suchmaschinenfreundlichen URLs benötige!
Vielen Dank schonmal im Voraus für jeden noch so kleinen Tipp!
Lesezeichen