HTML
Kurz oder moderat cachen, aber immer revalidierbar halten. Keine immutable-Direktive fuer kanonische Seiten.
Viele Teams denken bei Caching nur an Ladezeit. Technisch sauber gesetzte Cache-Header beeinflussen aber auch, wie effizient Googlebot und andere Systeme Inhalte erneut abrufen, wann 304-Antworten moeglich sind und wie konsistent HTML, Assets und Freshness-Signale ausgeliefert werden.
Google hat mehrfach erklaert, dass Googlebot bedingte Requests mit ETag und Last-Modified unterstuetzt. Wenn ein Dokument unveraendert ist und der Server korrekt mit 304 Not Modified antwortet, muss der Inhalt nicht erneut komplett uebertragen werden. Das spart Bandbreite und macht Revalidierung effizienter.
Gleichzeitig gilt: Nicht jedes Objekt sollte gleich behandelt werden. Versionierte CSS- und JS-Dateien koennen sehr aggressiv gecacht werden. HTML-Dokumente dagegen brauchen meist kuerzere Fristen und saubere Revalidierung, weil Canonicals, structured data, interne Links, Metadaten oder sichtbare Inhalte sich aendern koennen.
Kurz oder moderat cachen, aber immer revalidierbar halten. Keine immutable-Direktive fuer kanonische Seiten.
Lange TTL, Fingerprint im Dateinamen und optional immutable. Genau hier liegt der groesste sichere Hebel.
lastmod, dateModified und echte Inhaltsaenderungen muessen zusammenpassen, sonst entstehen widerspruechliche Signale.
ETag liefert einen Identifier fuer eine bestimmte Version einer Ressource. Last-Modified liefert einen Zeitstempel. Fordert ein Client oder Bot die Ressource spaeter erneut an, kann der Server pruefen, ob sich seitdem wirklich etwas geaendert hat.
Wenn nichts neu ist, folgt idealerweise eine 304-Antwort statt eines erneuten kompletten 200-Downloads. Google Search Central empfiehlt ausserdem, bei Last-Modified ein korrektes HTTP-Datumsformat zu verwenden und zusaetzlich eine sinnvolle max-age-Angabe zu setzen, damit Crawler wissen, wann eine Revalidierung sinnvoll wird.
Cache-Control: public, max-age=300
ETag: "post-2026-04-07-v3"
Last-Modified: Tue, 07 Apr 2026 10:30:00 GMT
| Ressource | Empfehlung | Warum |
|---|---|---|
| HTML-Dokumente | public, max-age=0, must-revalidate oder kurze TTL mit Revalidierung |
HTML aendert sich inhaltlich, semantisch und fuer SEO haeufiger als Assets. |
| CSS/JS mit Fingerprint | public, max-age=31536000, immutable |
Die URL aendert sich bei jeder neuen Version. Lange TTL ist deshalb sicher. |
| Bilder mit stabiler URL | Moderate TTL + ETag/Last-Modified | Bei gleicher URL muessen Updates revalidierbar bleiben. |
| API/JSON fuer Frontend | Kurz cachen oder explizit revalidieren | Veraltete API-Antworten koennen Layout, Preise oder CTA-Logik falsch machen. |
MDN und web.dev behandeln immutable als Optimierung fuer Ressourcen, die sich unter derselben URL nicht mehr aendern sollen. In der Praxis bedeutet das: Nur versionierte Assets mit Hash im Dateinamen sind gute Kandidaten.
Ein typisches Beispiel sind von Vite generierte Dateien wie app-DcwmOEIp.css oder app-DcwmOEIp.js. Hier ist eine lange Lebensdauer sinnvoll, weil jede neue Version automatisch eine neue URL bekommt.
Falsch waere derselbe Ansatz fuer HTML oder fuer Bilder, die weiterhin unter derselben URL ausgetauscht werden. Dann bleibt alter Inhalt zu lange im Cache und kann visuelle, funktionale und SEO-bezogene Inkonsistenzen erzeugen.
Cache-Control: public, max-age=31536000, immutable
stale-while-revalidate kann sinnvoll sein, wenn Nutzer eine leicht veraltete Antwort kurzzeitig weiterverwenden duerfen, waehrend im Hintergrund aktualisiert wird. Das kann bei bestimmten APIs, Bildern oder Edge-Caches Performance bringen.
Fuer kanonisches HTML sollte man vorsichtiger sein. Wenn Seiten haeufig geaendert werden, neue JSON-LD-Blöcke erhalten, andere Title/Description-Werte bekommen oder wichtige interne Links angepasst werden, ist zu aggressive Stale-Auslieferung kontraproduktiv.
Die technische Frage lautet also nicht nur: Kann ich das cachen? Sondern: Darf diese Ressource fuer Nutzer, Bots und Debugging-Tools kurzzeitig veraltet sein, ohne dass daraus Fehlinterpretationen entstehen?
lastmod im Sitemap-Eintrag wird geaendert, obwohl sich HTML und sichtbarer Inhalt nicht real geaendert haben.Last-Modified wird aus Deploy-Zeit statt aus echter Inhaltsaenderung gebaut und sendet dadurch irrelevante Freshness-Signale.200 statt sauberer Revalidierung.Fuer viele Laravel-Projekte ist diese Baseline solide:
/build/: lange TTL plus immutable.lastmod, JSON-LD-dateModified und echte Inhaltsaenderung synchron halten.curl -I und HTML-Check gegenpruefen.# HTML
Cache-Control: public, max-age=0, must-revalidate
# Versionierte Vite-Assets
Cache-Control: public, max-age=31536000, immutable
Nicht zwingend. Beides kann funktionieren. Wichtig ist, dass die gewaehlte Revalidierungsstrategie sauber implementiert ist und nicht bei jeder Auslieferung kuenstlich neue Werte erzeugt.
Nein, nicht direkt. Der Nutzen liegt in effizienterer Revalidierung, geringerer Uebertragung und stabilerer technischer Auslieferung.
Ja. Wenn HTML, Assets oder APIs asynchron veralten, entstehen falsche Eindruecke bei Debugging, Rendering, Structured-Data-Checks und manuellen Audits.
Wenn HTML, Assets, JSON-LD und Freshness-Signale nicht sauber zusammenspielen, entstehen genau die Fehler, die in technischen SEO-Audits oft erst spaet auffallen. Wir priorisieren die Stellen, an denen Caching, Rendering und Crawlbarkeit wirklich zusammenhaengen.
Weiterfuehrende Links fuer diese Seite