Zum Inhalt springen

Portierung von Smarty-Modul: Caching probleme

Erstellt am 10. Dezember 2011 · 2 Antworten · letzte Antwort am 11. Dezember 2011

Tags: Cache & Performance, Frage

rgasch ·

Hallo,

ich habe eine Kundenanfrage um ein Smarty-basiertes Modul auf Typo3 zu portieren. Also habe ich mal Typo3 recherchiert, allerlei gelesen und ein bisschen experimentiert.

Ich habe it kickstarter ein Modul erstellt und dann in pi1 klasse mal folgendes als Test gemacht:

class tx_test_pi1 extends tslib_pibase {
        var $prefixId      = 'tx_test_pi1';
        var $scriptRelPath = 'pi1/class.tx_test_pi1.php';
        var $extKey        = 'test';
        var $pi_checkCHash = true;

        function main($content, $conf) {
                $this->conf = $conf;
                $this->pi_setPiVarDefaults();
                $this->pi_loadLL();

$smarty = new Smarty();
$smarty->template_dir = 'typo3conf/ext/test/pi1/templates';
$smarty->compile_dir = 'typo3conf/ext/test/pi1/templates_c';
$smarty->cache_dir = 'typo3conf/ext/test/pi1/cache';
$smarty->config_dir = 'typo3conf/ext/test/pi1/configs';

require_once ('typo3conf/ext/test/pi1/Smarty/Smarty.class.php');
require_once ('typo3conf/ext/test/pi1/MeineKlasse.php');

$smarty = new Smarty();
$smarty->template_dir = 'typo3conf/ext/test/pi1/templates';
$smarty->compile_dir = 'typo3conf/ext/test/pi1/templates_c';
$smarty->cache_dir = 'typo3conf/ext/test/pi1/cache';
$smarty->config_dir = 'typo3conf/ext/test/pi1/configs';

$smarty->plugins_dir[] = 'typo3conf/ext/test/pi1/templates/plugins';
$smarty->assign ('data', $data);
$smarty->display('my_template.tpl');

So grundsätzlich funktioniert das ganze ABER

1) Beim ersten Aufruf dauert die Erstellung der Seite ziemlich lang (> 10 sek) und der Smarty output wird angezeigt
2) Beim nächsten Aufruf gehts richtig schnell aber der Smarty output wird nicht mehr angezeigt. Wenn ich jedoch im Backend das cache leere, dann dauerts wieder gleich lang wie in #1 und der Smarty output wird wieder angezeigt.

Was verstehe ich hier falsch? Es handelt sich doch um PHP code der ausgeführt werden sollte. Dem scheint aber nicht so zu sein.

Was mache ich falsch?

Gruss/Danke
Robert