Cache-Control für Laravel konfigurieren
Schritt-für-Schritt-Anleitung: Cache-Control in Laravel einrichten — mit Middleware-Code zum Kopieren und Best Practices.
Cache-Control in Laravel
Cache-Control steuert, wie Browser und Proxies Responses cachen. Für sensible Seiten (Dashboard, Account) ist no-store Pflicht — damit werden keine Kopien im Cache gespeichert. Mit 8 von 166 Punkten im Web Security Check.
Laravel bietet zwei Ansätze: eine eigene Middleware für sensible Routes oder die eingebaute cache.headers Route-Middleware. Für statische Assets (CSS, JS, Bilder) konfigurieren Sie lange Cache-Zeiten über den Webserver.
Cache-Control in der Middleware konfigurieren
Fügen Sie den Header in Ihrer SecurityHeaders-Middleware hinzu. Der Header wird bei jedem Response automatisch gesetzt.
// app/Http/Middleware/CacheControl.php
public function handle($request, Closure $next)
{
$response = $next($request);
if ($request->is('dashboard/*', 'api/*', 'account/*')) {
$response->headers->set('Cache-Control',
'no-store, no-cache, must-revalidate');
}
return $response;
}
// Oder per Route-Gruppe:
Route::middleware('cache.headers:no_store;no_cache;must_revalidate')
->group(function () {
Route::get('/dashboard', [DashboardController::class, 'index']);
}); Konfiguration verifizieren
Prüfen Sie sensible Seiten mit curl -sI https://ihre-domain.de/dashboard | grep -i cache. Der Header muss no-store enthalten.
Häufige Fehler
no-store vs no-cache
no-cache erlaubt Caching, fordert aber Revalidierung. no-store verbietet Caching vollständig. Für sensible Daten immer no-store verwenden.
Statische Assets ohne Cache
Setzen Sie lange Cache-Zeiten für Vite-generierte Assets (sie haben Content-Hashes im Dateinamen). Der Webserver (Nginx) ist dafür verantwortlich, nicht Laravel.
Compliance-Relevanz
Wie steht Ihre Domain bei Cache-Control?
Prüfen Sie es jetzt — kostenlos, ohne Registrierung, mit 166 Prüfpunkte.