Ajax, JSON Response, Template und Caching
Hallo,
wie die Überschrift schon ausdrückt, geht es um die Verquickung einiger Dinge. Mein Vorhaben:
Ich lade sämtliche Inhalte per Ajax (über jQuery) nach und stelle sie mit Übergangseffekten auf der Seite dar. Das funktioniert prima. Da ich für die Darstellung Zugriff auf die einzelnen Container brauche, möchte ich als Response kein HTML, sondern JSON haben. DOM-Parsing per Javascript geht zwar auch, aber schon beim kleinsten HTML-Fehler steigt der IE aus, was mir zu unstabil ist. Daher habe ich es folgendermaßen gelöst:
Im Template fe_page.html5 steht im Kopf sinngemäß folgender Code:
PHP-Code:
if ($_SERVER["HTTP_X_REQUESTED_WITH"] == 'XMLHttpRequest') {
echo json_encode(array(
'class' => $this->class,
'main' => $this->replaceInsertTags($this->main),
'header' => $this->header,
'footer' => $this->footer,
'showroom' => $this->getCustomSection('Showroom'),
));
exit;
}
Auch das funktioniert prima - aber nur, solange das Caching abgeschaltet ist. Denn im Cache landet immer die HTML-Version (da der Ajax-Call mit dem exit; beendet wird) und die Ajax-Requests würden dann die falschen Daten aus dem Cache bekommen.
Wie kann ich das Problem lösen? Getrennte fe_page-Templates für HTML und Ajax/JSON-Anfragen wären super, mit gesondertem Caching. Beispielsweise könnte ich statt home.html eine Anfrage an home.json stellen, welche dann ein fe_page.json-Template nutzen würde und in einem anderen Cache-File landet. Oder aber ein getrenntes Caching für Ajax Requests. Gibt es eine Best Practise in Contao hierfür?
Vielen Dank schonmal für Eure Hilfe!
Grüße
Armin