TYPO3 Snippet: Page Cache aus einer Extension heraus löschen

Heute mal wieder ein kleines Snippet für Zwischendurch. Im Backend kennt man es bereits: Für manche Seiten richtet man folgende Page TSConfig ein, um automatisch den Cache von (bestimmten) Seiten löschen zu lassen, sobald Datensätze auf einer Seite verändert worden sind (z.B. bei Systemordnern von News)

TCEMAIN.clearCacheCmd = 6,66,666 // Leert den Cache der Seiten 6,66,666
TCEMAIN.clearCacheCmd = pages // Leert den Cache aller Seiten

Möchte man jedoch den Seiten-Cache dynamisch aus einer Extension heraus löschen – zum Beispiel beim Frontend Editing – so lässt sich dies mit der folgenden Funktion in einem beliebigen Controller realisieren:

# Page Cache der Seite 6 löschen
$this->cacheService->clearPageCache(6);

# Page Cache der Seiten 6,66,666 löschen
$this->cacheService->clearPageCache(array(6,66,666));

# Page Cache aller Seiten löschen
$this->cacheService->clearPageCache();

Doch Achtung:
Gerade bei großen Seiten sollte man den Cache von Seiten nicht andauernd löschen. Das Caching dient schließlich zur Beschleunigung des Seitenaufbaus!
Empfehlenswerter ist es einen eigenen Caching Mechanismus in seiner Extension zu verwenden und so nur gezielt den Cache von einzelnen Datensätzen in Detailansichten löschen.

2 Kommentare

  • Pingback: Links der Woche… - TYPO3 Blogger | TYPO3 Blogger

  • Danke für diesen Beitrag:

    Beispiel wie man über pageType den Cache von spezifischen Seiten löschen kann.

    clear = PAGE
    clear {
    10 = USER_INT
    10 {
    userFunc = Megafry\MyExt\Controller\MyController->clearcache
    clearPageId = 29,32,9
    }
    typeNum = 45555
    }

    /**
    * @param string $content
    * @param array $configuration
    * @return string
    */
    public function clearcache(string $content = “, array $configuration = []){

    $clearPageId = explode(„,“,$configuration[‚clearPageId‘]);
    if (is_array($clearPageId)) {
    $this->objectManager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(‚TYPO3\\CMS\\Extbase\\Object\\ObjectManager‘);
    $cacheService = $this->objectManager->get(‚TYPO3\\CMS\\Extbase\\Service\\CacheService‘);
    $cacheService->ClearPageCache($clearPageId);
    }

    }

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Highlighting von Codes ist mit den Tags  [ts], [php], [html], [javascript], [xml] oder [code] möglich.