Hallo zusammen,
folgende Situation: wir wollen im Shop ein Tracking-System serverseitig einbinden, weil die clientseitige Anbindung anfällig dafür ist, z.B. von Werbeblockern blockiert zu werden.
Damit das funktioniert, darf das Tracking-Skript selbst nicht gecached werden, während die Artikeldetailseite weiterhin gecached werden soll. Deshalb wollte ich das Tracking-Skript als action/Esi-Tag einfügen. Was soweit auch klappt, sprich ich hab mir eine Controller-Action geschrieben, die das Tracking-Skript enthält, und dieses per action-Tag eingebunden. Die Atikeldetailseite kommt aus dem Cache + das Tracking wird jedes Mal korrekt ausgeführt.
ABER : Natürlich lädt die Artikeldetailseite jetzt nicht mehr in 50ms, sondern in 500ms, weil ja noch der Request aus dem ESI-Tag vorher ausgeführt werden muss. Der shop enthält leider seeeehr viele Plugins, weshalb ein großer Overhead da ist und selbst ein simpler Controller-Request eben 500ms dauert.
So, da wir fürs Tracking jedoch weder Shopware-Funktionalität benötigen noch eine Datenbankverbindung oder sonstiges brauchen, wollte ich ein eigenes kleines PHP-Skript schreiben, was ich dann per ESI-Tag einbinde. Das PHP-Skript funktioniert soweit und lädt deutlich schneller (~100ms, eben solange wie der Request an die Cloud-Tracking-Software benötigt). Aber ich bekomme es nicht als ESI-Tag eingebunden!
An der Stelle, wo es eingebunden werden sollte, wird immer die gesamte Shopseite eingebunden, rekursiv, immer und immer wieder, bis der Browser abstürzt. In de rBootstrap des HttpCache Plugins wird das ESI-Tag mit
return '';
gebildet. $url ist hier jedoch keine vollständige URL, sondern ein String im Format /?controller=xyz&action=abc usw. Wenn ich an dieser Stelle den gleichen absoluten Link einfüge, also z.B. shopurl.de/xyz/abc dann funktioniert es nicht mehr und die Seite wird wieder rekursiv aufgerufen.
Frage: Wie schaffe ich es, eine „externe“ URL per Esi-Tag einzubinden, also eine URL, die KEIN Shopware-Controller ist?
- oder -
Gibt es irgendeine Art „lightweight“-Showpare-Controller, der zwar über die Standard-Konventionen gebildet wird, aber keinerlei Overhead (Pre, Post-Dispatch etc.) hat?
Viele Grüße
Malte