Problem mit Caching bei einer eigenen Extension [Gelöst]

  • jh@ jh@
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    29. 06. 2011, 17:05

    Hallo,

    ich habe für mich eine kleine Extension geschrieben, die ggf. Weiterleitungen von bestimmten Typo3-Seiten auf andere Typo3-Seiten durchführen muss (hat nichts mit den Weiterleitungen zu tun, die man über den Typo3-Seitenbaum anlegen kann).

    [u]Nur als Beispiel:[/u]
    Ich möchte, dass ein Seitenaufruf mit http://domain.de/index.php?id=5 auf eine Fehlerseite weitergeleitet wird, während http://domain.de/Testseite.5.0.html (optimierter Link via simulatestatic) normal angezeigt wird.

    Das PHP-Script wird derzeit im TypoScript im Template aufgerufen. Da das TypoScript gecached wird, funktioniert die Weiterleitung beim 1. Seitenaufruf, beim zweiten aber nicht mehr. Ich habe es nun schon so angepasst, dass ich beim Aufruf der Seite index.php?id=5 das Caching deaktiviere in der Extension. Funktioniert auch, solange Testseite.5.0.html nicht aufgerufen wurde. Diese wird wieder gecached, wodurch die Weiterleitung bei index.php?id=5 nicht mehr funktioniert.

    [u]Ich sehe für mich nun 2 Möglichkeiten:[/u]

    1. Das TypoScript-Caching grundsätzlich deaktivieren. Weiß allerdings nicht, wie das funktioniert und ich denke, es ist auch nicht ratsam.

    2. Das PHP-Script in der index.php von Typo3 aufrufen, damit es vor der ganzen Caching- und TypoScript-Geschichte aufgerufen wird. Aber das ist erst recht nicht ratsam zwecks Updates etc.

    Wie kann man also korrekt ein PHP-Script bei jedem Seitenaufruf ausführen lassen und das am besten noch bevor angefangen wird die Seite zu konstruieren oder aus dem Cache zu lesen?

    Ich hoffe, ich habe mich einigermaßen verständlich ausgedrückt und ihr könnt mir helfen.


  • 1
  • aemka aemka
    Jedi-Ratsmitglied
    0 x
    562 Beiträge
    9 Hilfreiche Beiträge
    29. 06. 2011, 17:57

    Entweder per Frontend-Hook, der an der Stelle in das Page-Rendering eingreift (pre-cache), bevor das Caching anläuft (schneller) oder ein Plugin auf der Seite als USER_INT- und nicht als USER-Typ einbinden, dann wird es auch bei jedem Page-Load ausgeführt.

    Nähere Infos > Google zu den Stichworten.

    http://www.aemka.de/

  • jh@ jh@
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2011, 09:06

    Vielen Dank für die Antwort!

    Da das Script auf jeder Seite geladen werden soll, fällt das mit dem Plugin vermutlich flach, da ich es so ja auf jeder Seite einbinden müsste (wenn du es so gemeint hast).

    Von dem Frontend-Hook hatte ich zwar schon gelesen, aber bisher noch nicht näher angeschaut, da es mir recht kompliziert erschien. Dann werde ich jetzt wohl die Gelegenheit nutzen und mich näher damit befassen. Bin gespannt.

    Danke aber nochmal für die Hinweise :)

  • jh@ jh@
    Padawan
    0 x
    32 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2011, 16:36

    Habe es erfolgreich geschafft, indem ich den HOOK "contentPostProc-output" von "tslib/class.tslib_fe.php" genutzt habe. Wäre zwar gern eher eingestiegen in den Rendering-Process, aber die Hooks vorher waren ungeeignet bzw. fehlten mir dann Funktionen, die ich benötige, aber erst später im Prozess definiert werden.

    Danke nochmal für den Hinweis :)

  • 1