Cache-Control in Contao konfigurieren
Cache-Control in Contao aktivieren — per Symfony EventSubscriber oder .htaccess. Mit Verifizierung und häufigen Fehlern.
Cache-Control in Contao
Cache-Control steuert Browser- und Proxy-Caching. Sensible Seiten dürfen nicht im Cache landen. Im Wolf-Agents Web Security Check 8 von 166 Punkten.
Contao nutzt Symfonys HTTP Cache. Sensible Pfade schützen Sie per EventSubscriber mit no-store.
In Contao-Projekten werden Security-Header typischerweise auf drei Ebenen konfiguriert: in der
config/config.yaml fuer Symfony-Framework-Header, per EventSubscriber
fuer dynamische Header und in der public/.htaccess fuer Apache-Level-Header.
Fuer Cache-Control empfehlen wir die Konfiguration per EventSubscriber, da dieser die meiste
Flexibilitaet bietet und nicht von der Webserver-Konfiguration abhaengt.
Nach jeder Aenderung an der Header-Konfiguration muessen Sie den Contao-Cache leeren:
vendor/bin/contao-console cache:clear. Ohne Cache-Clear werden Aenderungen an
der config.yaml oder an EventSubscribern nicht wirksam. In Produktionsumgebungen
verwenden Sie cache:clear --env=prod fuer den korrekten Cache-Kontext.
Cache-Control-Implementierung in Contao
Der EventSubscriber ist der empfohlene Weg — unabhängig vom Webserver, überlebt Updates. Die .htaccess ist der schnelle Fallback.
<?php
// src/EventSubscriber/CacheControlSubscriber.php
namespace AppEventSubscriber;
use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentHttpKernelEventResponseEvent;
use SymfonyComponentHttpKernelKernelEvents;
class CacheControlSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents(): array {
return [KernelEvents::RESPONSE => ['onResponse', 0]];
}
public function onResponse(ResponseEvent $event): void {
$response = $event->getResponse();
$response->headers->set('Cache-Control', 'no-store, no-cache, must-revalidate, private');
// Sensible Seiten nicht cachen
if (str_contains($event->getRequest()->getPathInfo(), '/contao')) {
$response->headers->set('Cache-Control', 'no-store, no-cache, must-revalidate, private');
}
}
}# public/.htaccess — Cache-Control
<IfModule mod_headers.c>
Header always set Cache-Control "no-cache, no-store, must-revalidate"
</IfModule>Nach jeder Änderung: vendor/bin/contao-console cache:clear
Verifizierung
Nach der Konfiguration prüfen Sie den Header per curl. Testen Sie auf verschiedenen Seitentypen — Startseite, Detailseiten und Formulare.
# Cache leeren
vendor/bin/contao-console cache:clear
# Header prüfen
curl -sI https://ihre-domain.de | grep -i cache-control
# Erwartete Ausgabe:
# cache-control: no-cache, privateHäufige Fehler bei Cache-Control in Contao
HTTP-Cache cached sensible Seiten
Contaos Reverse Proxy kann Login-Seiten cachen. Setzen Sie no-store für sensible Pfade.
contao-console cache:clear vergessen
EventSubscriber-Änderungen erfordern Cache-Invalidierung.
CDN cached no-store-Seiten
Manche CDNs ignorieren no-store. Setzen Sie private zusätzlich.
Compliance-Relevanz
Die korrekte Implementierung von Cache-Control ist nicht nur eine technische Best Practice, sondern eine Anforderung, die bei Sicherheitsaudits und Penetrationstests regelmaessig geprueft wird. Fehlende oder falsch konfigurierte Header koennen zu Audit-Findings fuehren und die Zertifizierung gefaehrden.
Cache-Control erfüllt Anforderungen aus mehreren Compliance-Frameworks.
Wie steht Ihre Domain bei Cache-Control?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.