{"id":13502,"date":"2026-10-13T18:25:00","date_gmt":"2026-10-13T16:25:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=13502"},"modified":"2026-10-09T23:12:06","modified_gmt":"2026-10-09T21:12:06","slug":"cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/","title":{"rendered":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage"},"content":{"rendered":"<p>Strona, kt\u00f3ra przy drugich odwiedzinach jest od razu, nie zosta\u0142a pobrana ponownie. Wysz\u0142a z pami\u0119ci gdzie\u015b mi\u0119dzy serwerem a ekranem, a pozwoli\u0142a na to jedna linijka nag\u0142\u00f3wka.<\/p>\n<p>Ta linijka nazywa si\u0119 <code>Cache-Control<\/code>. Jest kr\u00f3tka, sk\u0142ada si\u0119 ze s\u0142\u00f3w wygl\u0105daj\u0105cych na samo t\u0142umacz\u0105ce si\u0119, a dwa z nich znacz\u0105 niemal co\u015b przeciwnego, cho\u0107 brzmi\u0105 jak synonimy.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/cache-control-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Dwa pasma pami\u0119ci - przegl\u0105darka i pami\u0119ci wsp\u00f3\u0142dzielone - z regu\u0142ami obowi\u0105zuj\u0105cymi ka\u017cde z nich, a no-store poza obydwoma\"><figcaption>Regu\u0142a stoi w pa\u015bmie, kt\u00f3rego dotyczy. To, co stoi w obu, obowi\u0105zuje oba.<\/figcaption><\/figure>\n<h2>Dwie pami\u0119ci, nie jedna<\/h2>\n<p>Mi\u0119dzy serwerem a ekranem s\u0105 zwykle dwa miejsca, w kt\u00f3rych odpowied\u017a mo\u017ce zosta\u0107.<\/p>\n<p>Pierwszym jest przegl\u0105darka na jednym urz\u0105dzeniu. To, co tam le\u017cy, s\u0142u\u017cy dok\u0142adnie jednej osobie i zostaje, dop\u00f3ki nie wyga\u015bnie albo nie zostanie usuni\u0119te.<\/p>\n<p>Drugim jest pami\u0119\u0107 wsp\u00f3\u0142dzielona: CDN, firmowy po\u015brednik, cokolwiek stoj\u0105cego po drodze i obs\u0142uguj\u0105cego wielu ludzi z jednej kopii. Jest skuteczniejsza z dw\u00f3ch, bo jedna zapisana kopia oszcz\u0119dza tysi\u0105ce zapyta\u0144 &#8211; i gro\u017aniejsza, bo strona osobista, kt\u00f3ra tam wyl\u0105duje, zostaje wydana niew\u0142a\u015bciwym.<\/p>\n<p>Niemal ka\u017cde nieporozumienie wok\u00f3\u0142 zapisywania bierze si\u0119 z zapomnienia o drugiej pami\u0119ci. Regu\u0142y, kt\u00f3re zdaj\u0105 si\u0119 sobie przeczy\u0107, zwykle zwracaj\u0105 si\u0119 do r\u00f3\u017cnych pami\u0119ci.<\/p>\n<h2>no-cache i no-store to nie dwa razy to samo s\u0142owo<\/h2>\n<p>Te dwa wygl\u0105daj\u0105 jak para. Par\u0105 nie s\u0105.<\/p>\n<p><code>no-store<\/code> znaczy: niczego nie przechowywa\u0107. \u017badnej kopii nigdzie, ani w przegl\u0105darce, ani w pami\u0119ci wsp\u00f3\u0142dzielonej, ani na dysku. Ka\u017cde zapytanie wraca do serwera. To regu\u0142a dla wyci\u0105gu bankowego.<\/p>\n<p><code>no-cache<\/code> znaczy: przechowywa\u0107, ale przed u\u017cyciem zapyta\u0107. Kopia zostaje zapisana ca\u0142kiem zwyczajnie; przegl\u0105darce nie wolno jej tylko wyda\u0107 bez sprawdzenia. Gdy serwer odpowie, \u017ce nic si\u0119 nie zmieni\u0142o, zapisana kopia zostaje u\u017cyta i \u017cadna tre\u015b\u0107 nie p\u0142ynie.<\/p>\n<p><code>no-cache<\/code> nie znaczy wi\u0119c \u201enie zapisywa\u0107&#8221;. Znaczy \u201ezapisywa\u0107, ale pyta\u0107 za ka\u017cdym razem&#8221; &#8211; i regu\u0142a ta istnieje w\u0142a\u015bnie po to, by zapisywanie sta\u0142o si\u0119 mo\u017cliwe dla stron zmieniaj\u0105cych si\u0119 nieprzewidywalnie. Kr\u00f3tkie zapytanie kosztuje u\u0142amek pe\u0142nego przesy\u0142u.<\/p>\n<p>Kto pisze <code>no-store<\/code>, a ma na my\u015bli <code>no-cache<\/code>, oddaje t\u0119 oszcz\u0119dno\u015b\u0107 przy ka\u017cdym pojedynczym zapytaniu. Kto pisze <code>no-cache<\/code>, a ma na my\u015bli <code>no-store<\/code>, zostawia kopi\u0119 czego\u015b poufnego na dysku.<\/p>\n<h2>Dwie liczby dla dw\u00f3ch pami\u0119ci<\/h2>\n<p><code>max-age<\/code> okre\u015bla czas \u017cycia w sekundach. Dla pami\u0119ci wsp\u00f3\u0142dzielonych mo\u017cna ustawi\u0107 osobny czas za pomoc\u0105 <code>s-maxage<\/code>, kt\u00f3ry ma tam pierwsze\u0144stwo przed <code>max-age<\/code>.<\/p>\n<p>Strona g\u0142\u00f3wna Wikipedii pokazuje, po co s\u0105 obie. Jej nag\u0142\u00f3wek brzmi <code>s-maxage=86400, must-revalidate, max-age=3600<\/code>: CDN mo\u017ce trzyma\u0107 stron\u0119 ca\u0142y dzie\u0144, przegl\u0105darka godzin\u0119. Kosztowna pami\u0119\u0107 trzyma j\u0105 d\u0142ugo, osobista kr\u00f3tko &#8211; i jedna linijka reguluje oba.<\/p>\n<p>Bez <code>s-maxage<\/code> pami\u0119\u0107 wsp\u00f3\u0142dzielona po prostu idzie za <code>max-age<\/code>. To przypadek zwyczajny i dlatego CDN trzyma czasem stron\u0119 o wiele d\u0142u\u017cej albo kr\u00f3cej, ni\u017c zamierzano: nikt nie napisa\u0142 dla niego osobnej liczby.<\/p>\n<p><code>must-revalidate<\/code> dope\u0142nia obrazu. Gdy czas \u017cycia minie, zapisanej kopii nie wolno ju\u017c u\u017cy\u0107, nawet na chwil\u0119, nawet przy nieosi\u0105galnym serwerze. Bez tej regu\u0142y pami\u0119\u0107 ma z wygas\u0142\u0105 kopi\u0105 pewien margines swobody.<\/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=\"Dwie p\u00f3\u0142ki bardzo r\u00f3\u017cnej d\u0142ugo\u015bci z tym samym rodzajem kafelk\u00f3w i pojedynczy koralowy kafelek le\u017c\u0105cy na ziemi pod obiema\"><br \/>\n<\/figure>\n<h2>Komu wolno w og\u00f3le zapisywa\u0107<\/h2>\n<p><code>private<\/code> i <code>public<\/code> nie opisuj\u0105 tre\u015bci. Nazywaj\u0105 pami\u0119\u0107.<\/p>\n<p><code>private<\/code> znaczy: tylko przegl\u0105darka jednej osoby. Pami\u0119ciom wsp\u00f3\u0142dzielonym nie wolno tej odpowiedzi zatrzyma\u0107. To w\u0142a\u015bciwe ustawienie dla wszystkiego, co pokazuje nazwisko, koszyk albo stan konta &#8211; dla wszystkiego z\u0142o\u017conego pod pojedyncze odwiedziny.<\/p>\n<p><code>public<\/code> znaczy: pami\u0119ci wsp\u00f3\u0142dzielone tak\u017ce mog\u0105 zatrzyma\u0107. Uchyla ponadto kilka regu\u0142, kt\u00f3re inaczej przemawia\u0142yby przeciw zapisywaniu, i dlatego stoi te\u017c na stronach, kt\u00f3re i tak da\u0142yby si\u0119 bez k\u0142opotu zapisa\u0107.<\/p>\n<p>B\u0142\u0105d jest tu cichy i powa\u017cny: strona osobista bez <code>private<\/code>, za CDN-em, zostaje raz zapisana i podana nast\u0119pnym odwiedzinom wraz z cudzym nazwiskiem. Nic si\u0119 nie wywala, nic nie trafia do dziennika, a strona wygl\u0105da poprawnie &#8211; dla niew\u0142a\u015bciwej osoby.<\/p>\n<h2>Przeterminowane odpowiedzi wydawane celowo<\/h2>\n<p>Dwa dodatki pozwalaj\u0105 pami\u0119ci wyda\u0107 wygas\u0142\u0105 kopi\u0119 \u015bwiadomie i oba sprawiaj\u0105, \u017ce witryny wydaj\u0105 si\u0119 szybsze, ni\u017c s\u0105.<\/p>\n<p><code>stale-while-revalidate<\/code> m\u00f3wi: je\u015bli kopia w\u0142a\u015bnie wygas\u0142a, wydaj j\u0105 mimo to i pobierz w tle \u015bwie\u017c\u0105. Odwiedziny nie czekaj\u0105 na nic; nast\u0119pne dostan\u0105 now\u0105 wersj\u0119.<\/p>\n<p><code>stale-if-error<\/code> m\u00f3wi: je\u015bli serwer jest nieosi\u0105galny, wydawaj raczej star\u0105 kopi\u0119 ni\u017c stron\u0119 b\u0142\u0119du. Witryna z t\u0105 regu\u0142\u0105 przetrwa kr\u00f3tk\u0105 awari\u0119 tak, \u017ce nikt tego nie zauwa\u017cy.<\/p>\n<p>Strona g\u0142\u00f3wna BBC u\u017cywa obu, z warto\u015bciami 30 i 90 sekund. GitHub wysy\u0142a natomiast <code>max-age=0, private, must-revalidate<\/code> &#8211; nic nie zostaje wydane bez zapytania, bo strona repozytorium nie mo\u017ce by\u0107 przeterminowana ani o sekund\u0119.<\/p>\n<p>\u017badne z dwojga nie jest bardziej s\u0142uszne. To r\u00f3\u017cne odpowiedzi na to samo pytanie: co jest tu gorsze, strona wolna czy stara.<\/p>\n<h2>Co pokazuje jedna linijka nag\u0142\u00f3wka<\/h2>\n<p>Linijka przychodzi z ka\u017cd\u0105 odpowiedzi\u0105, a jej odczytanie kosztuje jedno zapytanie.<\/p>\n<p>Warto zada\u0107 cztery pytania. Najpierw rozstrzygnij, czy potrzebne jest <code>no-store<\/code>, czy <code>no-cache<\/code>: bez przechowywania kopii czy z przechowywaniem i sprawdzaniem przed u\u017cyciem. Nast\u0119pnie sprawd\u017a, czy spersonalizowana strona ma <code>private<\/code> i czy pami\u0119\u0107 wsp\u00f3\u0142dzielona ma osobne <code>s-maxage<\/code>, czy te\u017c jedna liczba okre\u015bla oba czasy. Na koniec oce\u0144, czy czas \u017cycia pasuje do cz\u0119stotliwo\u015bci zmian tre\u015bci.<\/p>\n<p><a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/http-security-header-checker\/\">Sprawdzarka nag\u0142\u00f3wk\u00f3w bezpiecze\u0144stwa HTTP<\/a> odczytuje nag\u0142\u00f3wki dowolnego adresu tak, jak czyta je przegl\u0105darka, \u015bledz\u0105c po drodze przekierowania.<\/p>\n<p>U\u017cyteczna odpowied\u017a to jedno zdanie: czy ta strona jest zapisywana tam, gdzie ma by\u0107, i tak d\u0142ugo, jak ma by\u0107 &#8211; i przez nikogo wi\u0119cej.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Dlaczego no-cache oszcz\u0119dza przesy\u0142 tylko wtedy, gdy odpowied\u017a niesie ETag albo Last-Modified?<\/h3>\n<p>Poniewa\u017c zapytanie sprawdzaj\u0105ce potrzebuje warto\u015bci do por\u00f3wnania. Przegl\u0105darka odsy\u0142a j\u0105 jako <code>If-None-Match<\/code> albo <code>If-Modified-Since<\/code> i dopiero wtedy serwer mo\u017ce odpowiedzie\u0107 kodem 304 Not Modified bez ponownego wysy\u0142ania tre\u015bci. Bez \u017cadnej z tych warto\u015bci nie ma czego por\u00f3wna\u0107, a ka\u017cde sprawdzenie staje si\u0119 pe\u0142nym przesy\u0142em.<\/p>\n<h3>Jak nieaktualna strona znika z CDN, kt\u00f3ry trzyma j\u0105 z s-maxage=86400?<\/h3>\n<p>Nie za spraw\u0105 nowego nag\u0142\u00f3wka. Kopie ju\u017c zapisane nios\u0105 ze sob\u0105 sw\u00f3j czas \u017cycia; zmieniony nag\u0142\u00f3wek dotyczy dopiero nast\u0119pnej kopii. W CDN s\u0142u\u017cy do tego wyczyszczenie pami\u0119ci przez panel administracyjny albo interfejs API, zwykle nazywane purge.<\/p>\n<p>W przegl\u0105darkach takiego \u015brodka nie ma. Kopia z max-age=3600 zostaje tam nawet godzin\u0119, bez wzgl\u0119du na to, co serwer w mi\u0119dzyczasie wysy\u0142a. Pasuje to do podzia\u0142u w przyk\u0142adzie Wikipedii: pami\u0119\u0107, kt\u00f3r\u0105 operator mo\u017ce opr\u00f3\u017cni\u0107, mo\u017ce trzyma\u0107 stron\u0119 d\u0142ugo, a ta, do kt\u00f3rej nie si\u0119ga, tylko kr\u00f3tko.<\/p>\n<p>Dla skrypt\u00f3w i arkuszy styl\u00f3w zwykle stosuje si\u0119 inn\u0105 drog\u0119: nowy adres dla ka\u017cdej wersji, na przyk\u0142ad z numerem wersji albo sum\u0105 kontroln\u0105 w nazwie pliku, w po\u0142\u0105czeniu z d\u0142ugim czasem \u017cycia. Zmieniony plik ma wtedy nowy adres i \u017cadna stara kopia nie stoi na przeszkodzie.<\/p>\n<h3>Jak\u0105 regu\u0142\u0119 uchyla public i kiedy robi si\u0119 to ryzykowne?<\/h3>\n<p>Najwa\u017cniejsza dotyczy \u017c\u0105da\u0144 z nag\u0142\u00f3wkiem Authorization, na przyk\u0142ad za ochron\u0105 has\u0142em przez uwierzytelnianie HTTP. Wed\u0142ug RFC 9111 pami\u0119\u0107 wsp\u00f3\u0142dzielona nie mo\u017ce zwykle u\u017cy\u0107 odpowiedzi na takie \u017c\u0105danie do obs\u0142ugi kolejnych \u017c\u0105da\u0144, bo jest ona przeznaczona dla zalogowanej osoby. public wprost na to pozwala, podobnie jak s-maxage i must-revalidate.<\/p>\n<p>Ryzykowne robi si\u0119 to wtedy, gdy szablon ustawia public na wszystkich stronach, a obszar chroniony te\u017c temu podlega: CDN mo\u017ce wtedy zapisa\u0107 odpowied\u017a i wyda\u0107 j\u0105 odwiedzaj\u0105cym, kt\u00f3rzy nigdy si\u0119 nie zalogowali. Obszary chronione potrzebuj\u0105 w nag\u0142\u00f3wku private albo no-store, niezale\u017cnie od tego, co wysy\u0142a reszta witryny.<\/p>\n<h3>Czy stale-if-error dzia\u0142a tak\u017ce wtedy, gdy serwer odpowiada, ale b\u0142\u0119dem?<\/h3>\n<p>Tak. Wed\u0142ug RFC 5861 za b\u0142\u0105d uchodz\u0105 tak\u017ce kody stanu 500, 502, 503 i 504, a nie tylko nieosi\u0105galny serwer. To, czy pami\u0119\u0107 w og\u00f3le respektuje t\u0119 regu\u0142\u0119, zale\u017cy jednak od CDN i przegl\u0105darki, a strony b\u0142\u0119du wys\u0142anej z kodem 200 \u017cadna z nich nie rozpozna jako b\u0142\u0119du.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/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>Jedna linijka nag\u0142\u00f3wka rozstrzyga, jak d\u0142ugo strona jest przechowywana i przez kogo. Dwa jej s\u0142owa wygl\u0105daj\u0105 wymiennie, a robi\u0105 rzeczy przeciwne, a jedna liczba dotyczy pami\u0119ci, o kt\u00f3rej ma\u0142o kto my\u015bli.<\/p>\n","protected":false},"author":1,"featured_media":16123,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[154],"tags":[92421,92238,92283],"class_list":["post-13502","post","type-post","status-publish","format-standard","hentry","category-tutorials-pl-tworzenie-stron-internetowych","tag-server-administration-pl","tag-tutorial-pl","tag-web-performance-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.\" \/>\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\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-10-13T16:25:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-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\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage\",\"datePublished\":\"2026-10-13T16:25:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/\"},\"wordCount\":1374,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13502-cache-control-prosto-wyjasnione-nz.png\",\"keywords\":[\"Server Administration\",\"Tutorial\",\"Web Performance\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/\",\"name\":\"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13502-cache-control-prosto-wyjasnione-nz.png\",\"datePublished\":\"2026-10-13T16:25:00+00:00\",\"description\":\"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13502-cache-control-prosto-wyjasnione-nz.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-13502-cache-control-prosto-wyjasnione-nz.png\",\"width\":1200,\"height\":630,\"caption\":\"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage\"}]},{\"@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 prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik","description":"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.","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\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/","og_locale":"en_US","og_type":"article","og_title":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik","og_description":"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-10-13T16:25:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-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\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage","datePublished":"2026-10-13T16:25:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/"},"wordCount":1374,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-nz.png","keywords":["Server Administration","Tutorial","Web Performance"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/","name":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-nz.png","datePublished":"2026-10-13T16:25:00+00:00","description":"Co robi\u0105 no-cache, no-store, max-age, s-maxage i private, dlaczego dwa podobnie brzmi\u0105ce s\u0105 przeciwie\u0144stwami i jak odczyta\u0107 prawdziw\u0105 linijk\u0119 Cache-Control.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-nz.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-13502-cache-control-prosto-wyjasnione-nz.png","width":1200,"height":630,"caption":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/cache-control-prosto-wyjasnione-co-robia-no-cache-no-store-max-age-i-s\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cache-Control prosto wyja\u015bnione: co robi\u0105 no-cache, no-store, max-age i s-maxage"}]},{"@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\/13502","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=13502"}],"version-history":[{"count":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13502\/revisions"}],"predecessor-version":[{"id":22161,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/13502\/revisions\/22161"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/16123"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=13502"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=13502"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=13502"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}