{"id":13500,"date":"2026-10-13T12:45:00","date_gmt":"2026-10-13T10:45:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13500"},"modified":"2026-09-25T09:45:53","modified_gmt":"2026-09-25T07:45:53","slug":"cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/","title":{"rendered":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken"},"content":{"rendered":"<p>Eine Seite, die beim zweiten Besuch sofort da ist, wurde nicht noch einmal geholt, sondern kam aus einem Speicher irgendwo zwischen Server und Bildschirm &#8211; und ein Header hat das erlaubt.<\/p>\n<p>Diese Zeile hei\u00dft <code>Cache-Control<\/code> &#8211; kurz, gebaut aus W\u00f6rtern, die selbsterkl\u00e4rend aussehen, und zwei davon bedeuten beinahe Gegens\u00e4tzliches, obwohl sie wie Synonyme klingen.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/cache-control-de.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Zwei Speicherb\u00e4nder - Browser und gemeinsame Speicher - mit den Angaben, die f\u00fcr sie gelten, und no-store au\u00dferhalb von beiden\"><figcaption>Eine Angabe steht in dem Band, f\u00fcr das sie gilt. Was in beiden steht, gilt f\u00fcr beide.<\/figcaption><\/figure>\n<h2>Zwei Speicher, nicht einer<\/h2>\n<p>Zwischen Server und Bildschirm gibt es meist zwei Orte, an denen eine Antwort liegen bleiben kann.<\/p>\n<p>Der erste ist der Browser auf einem Ger\u00e4t. Was dort liegt, dient genau einer Person und bleibt, bis es abl\u00e4uft oder gel\u00f6scht wird.<\/p>\n<p>Der zweite ist ein gemeinsamer Speicher: ein CDN, ein Firmen-Proxy, irgendetwas im Weg, das viele Menschen aus einer Kopie bedient. Er ist der wirksamere von beiden, weil eine gespeicherte Kopie tausende Anfragen spart &#8211; und der gef\u00e4hrlichere, weil eine pers\u00f6nliche Seite, die dort landet, an die Falschen ausgegeben wird.<\/p>\n<p>Fast jedes Missverst\u00e4ndnis \u00fcbers Zwischenspeichern kommt daher, dass der zweite Speicher vergessen wird. Angaben, die sich zu widersprechen scheinen, sprechen meist verschiedene Speicher an.<\/p>\n<h2>no-cache und no-store sind nicht zweimal dasselbe Wort<\/h2>\n<p>Die beiden sehen aus wie ein Paar und sind keins.<\/p>\n<p><code>no-store<\/code> hei\u00dft: nichts aufbewahren. Keine Kopie irgendwo, weder im Browser noch in einem gemeinsamen Speicher noch auf einer Platte. Jede Anfrage geht zum Server zur\u00fcck. Das ist die Angabe f\u00fcr einen Kontoauszug.<\/p>\n<p><code>no-cache<\/code> hei\u00dft: aufbewahren, aber vor der Verwendung nachfragen. Die Kopie wird ganz normal gespeichert; der Browser darf sie nur nicht ohne R\u00fcckfrage ausliefern. Antwortet der Server, dass sich nichts ge\u00e4ndert hat, wird die gespeicherte Kopie verwendet, und es flie\u00dft kein Inhalt.<\/p>\n<p><code>no-cache<\/code> bedeutet also nicht \u201enicht zwischenspeichern&#8221;. Es bedeutet \u201ezwischenspeichern, aber jedes Mal nachfragen&#8221; &#8211; und es gibt diese Angabe gerade deshalb, um Zwischenspeichern f\u00fcr Seiten m\u00f6glich zu machen, die sich unvorhersehbar \u00e4ndern. Eine kurze R\u00fcckfrage kostet einen Bruchteil einer vollen \u00dcbertragung.<\/p>\n<p>Wer <code>no-store<\/code> schreibt und <code>no-cache<\/code> meint, verschenkt diese Ersparnis bei jeder einzelnen Anfrage. Wer <code>no-cache<\/code> schreibt und <code>no-store<\/code> meint, hinterl\u00e4sst eine Kopie von etwas Vertraulichem auf einer Platte.<\/p>\n<h2>Zwei Zahlen f\u00fcr zwei Speicher<\/h2>\n<p><code>max-age<\/code> ist die Lebensdauer in Sekunden. <code>s-maxage<\/code> ist dasselbe, aber nur f\u00fcr gemeinsame Speicher, und dort sticht es <code>max-age<\/code> aus.<\/p>\n<p>Die Startseite von Wikipedia zeigt, wozu es beide gibt. Der Header dort lautet <code>s-maxage=86400, must-revalidate, max-age=3600<\/code>: das CDN darf die Seite einen ganzen Tag behalten, ein Browser eine Stunde. Der teure Speicher h\u00e4lt sie lange, der pers\u00f6nliche kurz &#8211; und eine Zeile regelt beides.<\/p>\n<p>Ohne <code>s-maxage<\/code> folgt der gemeinsame Speicher schlicht dem <code>max-age<\/code>. Das ist der Normalfall, und deshalb h\u00e4lt ein CDN eine Seite manchmal weit l\u00e4nger oder k\u00fcrzer als gedacht: f\u00fcr ihn wurde keine eigene Zahl geschrieben.<\/p>\n<p><code>must-revalidate<\/code> vervollst\u00e4ndigt das Bild. Ist die Lebensdauer abgelaufen, darf die gespeicherte Kopie nicht mehr verwendet werden, auch nicht kurz, auch nicht bei unerreichbarem Server. Ohne diese Angabe hat ein Speicher mit einer abgelaufenen Kopie einen gewissen Spielraum.<\/p>\n<figure class=\"lw-illu\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/illu-cache-control.webp\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Zwei Regale sehr verschiedener L\u00e4nge mit derselben Sorte Kacheln, und eine einzelne korallenrote Kachel am Boden unter beiden\"><br \/>\n<\/figure>\n<h2>Wer \u00fcberhaupt speichern darf<\/h2>\n<p><code>private<\/code> und <code>public<\/code> beschreiben nicht den Inhalt, sondern benennen den Speicher.<\/p>\n<p><code>private<\/code> hei\u00dft: nur der Browser einer Person. Gemeinsame Speicher d\u00fcrfen diese Antwort nicht behalten. Das ist die richtige Einstellung f\u00fcr alles, was einen Namen, einen Warenkorb oder einen Kontostand zeigt &#8211; alles, was f\u00fcr einen einzelnen Besuch zusammengesetzt wurde.<\/p>\n<p><code>public<\/code> hei\u00dft: gemeinsame Speicher d\u00fcrfen ebenfalls behalten. Es hebt au\u00dferdem ein paar Regeln auf, die sonst gegen das Zwischenspeichern spr\u00e4chen, und steht deshalb auch auf Seiten, die ohnehin problemlos speicherbar w\u00e4ren.<\/p>\n<p>Der Fehler ist hier leise und ernst: eine pers\u00f6nliche Seite ohne <code>private<\/code>, hinter einem CDN, wird einmal gespeichert und dem n\u00e4chsten Besuch samt fremdem Namen vorgesetzt. Nichts st\u00fcrzt ab, nichts wird protokolliert, und die Seite sieht richtig aus &#8211; f\u00fcr die falsche Person.<\/p>\n<h2>Die veralteten Antworten, die mit Absicht ausgeliefert werden<\/h2>\n<p>Zwei Zus\u00e4tze erlauben einem Speicher, eine abgelaufene Kopie bewusst auszuliefern, und beide lassen Seiten schneller wirken, als sie sind.<\/p>\n<p><code>stale-while-revalidate<\/code> sagt: ist die Kopie gerade eben abgelaufen, gib sie trotzdem heraus und hol im Hintergrund eine frische. Der Besuch wartet auf nichts; der n\u00e4chste bekommt die neue Fassung.<\/p>\n<p><code>stale-if-error<\/code> sagt: ist der Server nicht erreichbar, liefere lieber die alte Kopie als eine Fehlerseite. Eine Seite mit dieser Angabe \u00fcbersteht einen kurzen Ausfall, ohne dass es jemand bemerkt.<\/p>\n<p>Die Startseite der BBC verwendet beides, mit 30 und 90 Sekunden. GitHub schickt dagegen <code>max-age=0, private, must-revalidate<\/code> &#8211; nichts wird ohne R\u00fcckfrage ausgeliefert, denn eine Repository-Seite darf keine Sekunde veraltet sein.<\/p>\n<p>Keines von beidem ist richtiger. Es sind verschiedene Antworten auf dieselbe Frage: was ist hier schlimmer, eine langsame Seite oder eine alte.<\/p>\n<h2>Was ein Header zeigt<\/h2>\n<p>Die Zeile kommt mit jeder Antwort mit, und sie zu lesen kostet eine Anfrage.<\/p>\n<p>Vier Fragen lohnen sich. Ist <code>no-store<\/code> gemeint oder <code>no-cache<\/code> &#8211; nichts behalten, oder behalten und nachfragen. Tr\u00e4gt eine pers\u00f6nliche Seite ein <code>private<\/code>. Gibt es ein eigenes <code>s-maxage<\/code> f\u00fcr den gemeinsamen Speicher, oder erledigt eine Zahl stillschweigend beide Aufgaben. Und ist die Lebensdauer plausibel daf\u00fcr, wie oft sich der Inhalt tats\u00e4chlich \u00e4ndert.<\/p>\n<p>Der <a href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/werkzeuge\/http-security-header-checker\/\">HTTP-Security-Header-Pr\u00fcfer<\/a> liest die Header einer beliebigen Adresse so, wie ein Browser sie liest, und verfolgt dabei die Weiterleitungen.<\/p>\n<p>Die brauchbare Antwort ist ein Satz: ob diese Seite dort gespeichert wird, wo sie soll, und so lange, wie sie soll &#8211; und von niemandem sonst.<\/p>\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n<h3>Warum spart no-cache nur dann \u00dcbertragung, wenn die Antwort einen ETag oder ein Last-Modified tr\u00e4gt?<\/h3>\n<p>Weil die R\u00fcckfrage einen Vergleichswert braucht. Der Browser schickt ihn als <code>If-None-Match<\/code> oder <code>If-Modified-Since<\/code> mit, und nur dann kann der Server mit 304 Not Modified antworten, ohne den Inhalt erneut zu senden. Fehlen beide Angaben, gibt es nichts zu vergleichen, und jede R\u00fcckfrage wird zu einer vollen \u00dcbertragung.<\/p>\n<h3>Wie verschwindet eine veraltete Seite aus einem CDN, das sie mit s-maxage=86400 h\u00e4lt?<\/h3>\n<p>Nicht durch einen neuen Header. Die Kopien, die schon gespeichert sind, tragen ihre Lebensdauer mit sich; ein ge\u00e4nderter Header gilt erst f\u00fcr die n\u00e4chste Kopie. Beim CDN gibt es daf\u00fcr das Leeren des Caches \u00fcber dessen Verwaltung oder Schnittstelle, meist Purge genannt.<\/p>\n<p>Bei Browsern gibt es dieses Mittel nicht. Eine Kopie mit max-age=3600 bleibt dort bis zu eine Stunde, gleich was der Server inzwischen sendet. Das passt zur Aufteilung im Beispiel von Wikipedia: Der Speicher, den der Betreiber leeren kann, darf die Seite lange halten, der, den er nicht erreicht, nur kurz.<\/p>\n<p>F\u00fcr Skripte und Stylesheets ist der \u00fcbliche Weg ein anderer: eine neue Adresse je Fassung, etwa mit einer Versionsnummer oder Pr\u00fcfsumme im Dateinamen, und dazu eine lange Lebensdauer. Eine ge\u00e4nderte Datei hat dann eine neue Adresse, und keine alte Kopie steht im Weg.<\/p>\n<h3>Welche Regel hebt public auf, und wann wird das heikel?<\/h3>\n<p>Die wichtigste betrifft Anfragen mit einem Authorization-Header, also etwa hinter einem Passwortschutz per HTTP-Anmeldung. Die Antwort auf eine solche Anfrage darf ein gemeinsamer Speicher nach RFC 9111 normalerweise nicht f\u00fcr weitere Anfragen verwenden, weil sie f\u00fcr eine angemeldete Person bestimmt ist. public erlaubt es ausdr\u00fccklich, ebenso s-maxage und must-revalidate.<\/p>\n<p>Heikel wird das, wenn eine Vorlage public f\u00fcr alle Seiten setzt und ein gesch\u00fctzter Bereich darunterf\u00e4llt: Das CDN darf die Antwort dann speichern und an Besuche ohne Anmeldung ausliefern. F\u00fcr gesch\u00fctzte Bereiche geh\u00f6rt private oder no-store in den Header, unabh\u00e4ngig davon, was die \u00fcbrige Seite sendet.<\/p>\n<h3>Greift stale-if-error auch, wenn der Server zwar antwortet, aber mit einem Fehler?<\/h3>\n<p>Ja. Nach RFC 5861 z\u00e4hlen auch die Statuscodes 500, 502, 503 und 504 als Fehler, nicht nur ein unerreichbarer Server. Ob ein Speicher die Angabe \u00fcberhaupt beachtet, h\u00e4ngt allerdings vom CDN und vom Browser ab, und eine Fehlerseite mit Status 200 erkennt keiner von beiden als Fehler.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9111.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9111: HTTP Caching<\/a><\/li>\n<li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9110.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9110: HTTP Semantics<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ein Header entscheidet, wie lange eine Seite aufbewahrt wird und von wem. Zwei ihrer W\u00f6rter sehen austauschbar aus und tun Gegens\u00e4tzliches, und eine Zahl gilt einem Speicher, an den kaum jemand denkt.<\/p>\n","protected":false},"author":1,"featured_media":16122,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[156],"tags":[92340,92235,92292],"class_list":["post-13500","post","type-post","status-publish","format-standard","hentry","category-tutorials-de-web-entwicklung","tag-server-administration-de","tag-tutorial-de","tag-web-performance-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-13T10:45:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken\",\"datePublished\":\"2026-10-13T10:45:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/\"},\"wordCount\":1298,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13500-cache-control-einfach-erklaert-nz.png\",\"keywords\":[\"Server Administration\",\"Tutorial\",\"Web Performance\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/\",\"name\":\"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13500-cache-control-einfach-erklaert-nz.png\",\"datePublished\":\"2026-10-13T10:45:00+00:00\",\"description\":\"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13500-cache-control-einfach-erklaert-nz.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13500-cache-control-einfach-erklaert-nz.png\",\"width\":1200,\"height\":630,\"caption\":\"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/web-entwicklung\\\/tutorials-de-web-entwicklung\\\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik","description":"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/","og_locale":"en_US","og_type":"article","og_title":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik","og_description":"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-13T10:45:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken","datePublished":"2026-10-13T10:45:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/"},"wordCount":1298,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png","keywords":["Server Administration","Tutorial","Web Performance"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/","name":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png","datePublished":"2026-10-13T10:45:00+00:00","description":"Was no-cache, no-store, max-age, s-maxage und private jeweils tun, warum die zwei \u00e4hnlich klingenden Gegens\u00e4tze sind und wie sich eine echte Cache-Control-Zeile lesen l\u00e4sst.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13500-cache-control-einfach-erklaert-nz.png","width":1200,"height":630,"caption":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/web-entwicklung\/tutorials-de-web-entwicklung\/cache-control-einfach-erklart-was-no-cache-no-store-max-age-und-s-maxage\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cache-Control einfach erkl\u00e4rt: Was no-cache, no-store, max-age und s-maxage jeweils bewirken"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13500","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=13500"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13500\/revisions"}],"predecessor-version":[{"id":22699,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13500\/revisions\/22699"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/16122"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13500"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13500"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13500"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}