{"id":15687,"date":"2026-11-09T18:55:00","date_gmt":"2026-11-09T17:55:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=15687"},"modified":"2026-10-26T13:14:31","modified_gmt":"2026-10-26T12:14:31","slug":"wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/","title":{"rendered":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie"},"content":{"rendered":"<p>Zapisana odpowied\u017a jest \u015bwie\u017ca, dop\u00f3ki regu\u0142y pami\u0119ci podr\u0119cznej pozwalaj\u0105 u\u017cywa\u0107 jej bez ponownego pytania serwera. Pozwala to unikn\u0105\u0107 \u017c\u0105dania sieciowego. Gdy potrzebne jest sprawdzenie, walidator mo\u017ce zapobiec ponownemu przes\u0142aniu tre\u015bci: pasuj\u0105ce warunkowe \u017c\u0105danie GET mo\u017ce otrzyma\u0107 <code>304 Not Modified<\/code>. \u017b\u0105danie i przetwarzanie nadal kosztuj\u0105 czas. Pami\u0119\u0107 bez walidator\u00f3w pozostaje wi\u0119c przydatna, dop\u00f3ki zapisana odpowied\u017a nadaje si\u0119 do ponownego u\u017cycia.<\/p>\n<p>Historyczny przebieg z 5 wrze\u015bnia 2026 r. obejmowa\u0142 dwadzie\u015bcia adres\u00f3w pocz\u0105tkowych. Jedena\u015bcie zapisanych odpowiedzi nie zawiera\u0142o ani ETagu, ani Last-Modified. Opis dotyczy tamtych odpowiedzi, a nie zasadniczej niezdolno\u015bci jedenastu ca\u0142ych witryn do obs\u0142ugi \u017c\u0105da\u0144 warunkowych.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/reval-reviewed-pl-20261025.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Historyczne nag\u0142\u00f3wki i interpretacja: 304 oszcz\u0119dza tre\u015b\u0107, a samo 200 nie dowodzi zmiany ani usterki.\"><figcaption>Historyczne nag\u0142\u00f3wki i interpretacja: 304 oszcz\u0119dza tre\u015b\u0107, a samo 200 nie dowodzi zmiany ani usterki.<\/figcaption><\/figure>\n<h2>Dwa walidatory, r\u00f3\u017cne gwarancje<\/h2>\n<p><code>Last-Modified<\/code> opisuje czas ostatniej modyfikacji z dok\u0142adno\u015bci\u0105 do sekundy. Odpowiadaj\u0105ce pole \u017c\u0105dania to <code>If-Modified-Since<\/code>. Kilka zmian w jednej sekundzie mo\u017ce przekroczy\u0107 t\u0119 rozdzielczo\u015b\u0107.<\/p>\n<p><code>ETag<\/code> to oznaczenie wersji, kt\u00f3rego tre\u015bci klient nie musi interpretowa\u0107. Oznaczenie jest odsy\u0142ane w <code>If-None-Match<\/code>. Wiarygodno\u015b\u0107 zale\u017cy od sposobu tworzenia: skr\u00f3t tre\u015bci lub inny odpowiedni mechanizm wersjonowania mo\u017ce rozr\u00f3\u017cnia\u0107 zmiany niewidoczne w znaczniku czasu. ETag nie musi by\u0107 skr\u00f3tem tre\u015bci.<\/p>\n<p>Silny ETag oznacza identyczne dane reprezentacji. S\u0142aby ETag, na przyk\u0142ad <code>W\/\"abc\"<\/code>, dopuszcza dane r\u00f3wnowa\u017cne bez identyczno\u015bci bajtowej. Dynamiczne tworzenie strony nie wymaga automatycznie s\u0142abego tagu; znaczenie ma rzeczywista gwarancja por\u00f3wnania.<\/p>\n<h2>Co zawiera zapisana pr\u00f3ba<\/h2>\n<p>Archiwum zawiera pi\u0119\u0107 ETag\u00f3w, w tym trzy s\u0142abe, oraz pi\u0119\u0107 p\u00f3l Last-Modified. Jedna odpowied\u017a ma oba pola, jedena\u015bcie nie ma \u017cadnego. Sze\u015b\u0107 odpowiedzi podaje <code>no-store<\/code>, ale tylko cztery z tych sze\u015bciu nie maj\u0105 walidator\u00f3w. Siedem odpowiedzi nie zawiera zatem walidator\u00f3w bez jednoczesnego no-store. Nie dowodzi to jeszcze mo\u017cliwo\u015bci przechowywania: znaczenie maj\u0105 r\u00f3wnie\u017c status, inne dyrektywy i rodzaj pami\u0119ci.<\/p>\n<p>Dwa wyniki maj\u0105 oznaczenie b\u0142\u0119du HTTP, w tym jeden z dw\u00f3ch bez Cache-Control. Zapisane podsumowanie nie zachowuje dok\u0142adnych kod\u00f3w tych odpowiedzi. Pr\u00f3ba nie obejmuje wi\u0119c dwudziestu potwierdzonych poprawnych odpowiedzi stron g\u0142\u00f3wnych i nie stanowi reprezentatywnej statystyki rynku.<\/p>\n<p>Analizator przypisa\u0142 sze\u015b\u0107 zakaz\u00f3w przechowywania, cztery natychmiastowe ponowne pobrania, trzy sta\u0142e rewalidacje, cztery przypadki \u015bwie\u017co\u015bci z p\u00f3\u017aniejsz\u0105 rewalidacj\u0105, jeden ze \u015bwie\u017co\u015bci\u0105 i ponownym pobraniem oraz dwie klasy heurystyczne. To klasyfikacja nag\u0142\u00f3wk\u00f3w, a nie zaobserwowane historie przegl\u0105darek. Na przyk\u0142ad 54 sekundy by\u0142y warto\u015bci\u0105 max-age, nie dowodem dok\u0142adnie tak d\u0142ugiego przechowywania w ka\u017cdej przegl\u0105darce.<\/p>\n<h2>\u015awie\u017co\u015b\u0107 i walidacja to odr\u0119bne kwestie<\/h2>\n<p><code>no-store<\/code> zabrania przechowywania w pami\u0119ci HTTP; <code>no-cache<\/code> wymaga udanej walidacji przed ponownym u\u017cyciem. <code>max-age=0<\/code> sprawia, \u017ce odpowied\u017a natychmiast staje si\u0119 nie\u015bwie\u017ca. Pami\u0119\u0107 prywatna i wsp\u00f3\u0142dzielona mog\u0105 podlega\u0107 r\u00f3\u017cnym zasadom, zw\u0142aszcza przy private lub s-maxage.<\/p>\n<p>Bez wyra\u017anie podanego okresu ponownego u\u017cycia pami\u0119\u0107 podr\u0119czna mo\u017ce w okre\u015blonych warunkach sama oszacowa\u0107 ten okres. To buforowanie heurystyczne. Dziesi\u0119\u0107 procent odst\u0119pu od Last-Modified to przyk\u0142ad, a nie obowi\u0105zkowy czas \u017cycia. \u017badna z dw\u00f3ch badanych odpowiedzi bez Cache-Control nie zawiera\u0142a Last-Modified, wi\u0119c archiwum nie potwierdza takiego obliczenia dla tych odpowiedzi. Test HTTP nie ustala r\u00f3wnie\u017c dzia\u0142ania przycisk\u00f3w wstecz i dalej.<\/p>\n<h2>Kompresja i pu\u0142apka ETagu<\/h2>\n<p>Dokumentacja Apache wskazuje, \u017ce domy\u015blne zachowanie <code>AddSuffix<\/code> modu\u0142\u00f3w kompresji mo\u017ce uniemo\u017cliwia\u0107 odpowiedzi 304 dla skompresowanych danych. Warunkowy test tego samego wariantu jest wi\u0119c przydatny. Sam powt\u00f3rzony status 200 nie dowodzi b\u0142\u0119du: wybrana reprezentacja mog\u0142a rzeczywi\u015bcie ulec zmianie.<\/p>\n<p><code>DeflateAlterETag NoChange<\/code> i <code>BrotliAlterETag NoChange<\/code> zachowuj\u0105 pierwotny tag, ale Apache wyra\u017anie opisuje wynikaj\u0105ce ograniczenie rozr\u00f3\u017cniania wariant\u00f3w. Wsp\u00f3lny silny tag dla bajt\u00f3w skompresowanych i nieskompresowanych nie staje si\u0119 poprawny dzi\u0119ki <code>Vary: Accept-Encoding<\/code>. Vary steruje wyborem wpisu w pami\u0119ci; silne walidatory dotycz\u0105 identyczno\u015bci danych reprezentacji.<\/p>\n<p>W\u0142a\u015bciwe rozwi\u0105zanie zale\u017cy od serwera i przetwarzania w pami\u0119ci podr\u0119cznej: poprawne odr\u0119bne silne tagi, prawid\u0142owo obs\u0142ugiwane s\u0142abe tagi dla r\u00f3wnowa\u017cnych reprezentacji albo usuni\u0119cie nieodpowiedniego ETagu kosztem tej mo\u017cliwo\u015bci walidacji. \u017b\u0105dania zakresowe i odpowiedzi warunkowe wymagaj\u0105 sprawdzenia. Pojedyncze 200 nie uzasadnia uniwersalnej dyrektywy produkcyjnej. Usuni\u0119to wi\u0119c wcze\u015bniejsze bezwarunkowe zapewnienie o bezpiecze\u0144stwie NoChange.<\/p>\n\n\n<!-- lw-flux-illu 15683-a4 -->\n<figure class=\"lw-illu\"><img src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/illustrationen\/flux-15683-a4.webp\" width=\"1120\" height=\"630\" loading=\"lazy\" decoding=\"async\" alt=\"Dwie ko\u0142dry z t\u0105 sam\u0105 wst\u0105\u017ck\u0105, jedna puszysta, druga p\u0142asko zapakowana pr\u00f3\u017cniowo. R\u00f3wnie myl\u0105cy jest wsp\u00f3lny ETag (znacznik wersji pliku) dla danych skompresowanych i nieskompresowanych.\"><figcaption>Dwie ko\u0142dry z t\u0105 sam\u0105 wst\u0105\u017ck\u0105, jedna puszysta, druga p\u0142asko zapakowana pr\u00f3\u017cniowo. R\u00f3wnie myl\u0105cy jest wsp\u00f3lny ETag (znacznik wersji pliku) dla danych skompresowanych i nieskompresowanych.<\/figcaption><\/figure>\n\n\n<h2>Powtarzalny warunkowy GET<\/h2>\n<p>Przyk\u0142ad Bash wymaga curl 7.68.0 lub nowszego. Zachowuje ten sam URL i preferencj\u0119 kodowania oraz zapisuje otrzymany ETag bez zmian. Skrypt ko\u0144czy dzia\u0142anie, je\u015bli pierwsza odpowied\u017a nie ma statusu 200 lub nie zawiera tagu. URL jest zast\u0119pczy; przy przekierowaniach w\u0142a\u015bciwy adres docelowy wymaga osobnego wyboru i testu.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">#!\/usr\/bin\/env bash<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">set<\/span> <span class=\"cbb-attr\">-euo<\/span> pipefail\n<\/span><span class=\"cbb-line\">url=<span class=\"cbb-string\">'https:\/\/example.com\/style.css'<\/span>\n<\/span><span class=\"cbb-line\">tag_file=<span class=\"cbb-variable\">$(<\/span>mktemp)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">trap<\/span> <span class=\"cbb-string\">'rm -f \"$tag_file\"'<\/span> EXIT\n<\/span><span class=\"cbb-line\">status=<span class=\"cbb-variable\">$(<\/span><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--silent<\/span> <span class=\"cbb-attr\">--show-error<\/span> <span class=\"cbb-attr\">--max-time<\/span> <span class=\"cbb-number\">20<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">-H<\/span> <span class=\"cbb-string\">'Accept-Encoding: gzip'<\/span> <span class=\"cbb-attr\">--etag-save<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$tag_file<\/span><span class=\"cbb-string\">\"<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--output<\/span> \/dev\/null <span class=\"cbb-attr\">--write-out<\/span> <span class=\"cbb-string\">'%{http_code}'<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$url<\/span><span class=\"cbb-string\">\"<\/span>)\n<\/span><span class=\"cbb-line\">&#91;&#91; <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$status<\/span><span class=\"cbb-string\">\"<\/span> == <span class=\"cbb-number\">200<\/span> &#93;&#93; <span class=\"cbb-operator\">||<\/span> { <span class=\"cbb-function\">printf<\/span> <span class=\"cbb-string\">'Initial HTTP status: %s\\n'<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$status<\/span><span class=\"cbb-string\">\"<\/span> <span class=\"cbb-operator\">&gt;<\/span>&amp;<span class=\"cbb-number\">2<\/span><span class=\"cbb-operator\">;<\/span> <span class=\"cbb-keyword\">exit<\/span> <span class=\"cbb-number\">1<\/span><span class=\"cbb-operator\">;<\/span> }\n<\/span><span class=\"cbb-line\">&#91;&#91; <span class=\"cbb-attr\">-s<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$tag_file<\/span><span class=\"cbb-string\">\"<\/span> &#93;&#93; <span class=\"cbb-operator\">||<\/span> { <span class=\"cbb-function\">printf<\/span> <span class=\"cbb-string\">'No ETag received\\n'<\/span> <span class=\"cbb-operator\">&gt;<\/span>&amp;<span class=\"cbb-number\">2<\/span><span class=\"cbb-operator\">;<\/span> <span class=\"cbb-keyword\">exit<\/span> <span class=\"cbb-number\">1<\/span><span class=\"cbb-operator\">;<\/span> }\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">curl<\/span> <span class=\"cbb-attr\">--silent<\/span> <span class=\"cbb-attr\">--show-error<\/span> <span class=\"cbb-attr\">--max-time<\/span> <span class=\"cbb-number\">20<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">-H<\/span> <span class=\"cbb-string\">'Accept-Encoding: gzip'<\/span> <span class=\"cbb-attr\">--etag-compare<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$tag_file<\/span><span class=\"cbb-string\">\"<\/span> \\\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-attr\">--output<\/span> \/dev\/null <span class=\"cbb-attr\">--dump-header<\/span> - <span class=\"cbb-attr\">--write-out<\/span> <span class=\"cbb-string\">'\\nHTTP %{http_code}\\n'<\/span> <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$url<\/span><span class=\"cbb-string\">\"<\/span><\/span><\/code><\/pre><\/figure>\n<p>Wy\u015bwietlone nag\u0142\u00f3wki odpowiedzi pokazuj\u0105 drugi ETag i kodowanie. Odpowied\u017a 304 nie ma tre\u015bci; przy 200 potrzebne jest sprawdzenie wariantu, zmiany i zachowania serwera. B\u0142\u0119dy sieci i inne statusy pozostaj\u0105 odr\u0119bnymi wynikami. Identyczne Accept-Encoding kontroluje jedn\u0105 dan\u0105 wej\u015bciow\u0105, lecz nie dowodzi identycznej wybranej kompresji ani tre\u015bci.<\/p>\n<p><a href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/narzedzia\/cache-control-revalidation-analyzer\/\">Analizator Cache-Control i rewalidacji<\/a> wysy\u0142a otrzymany ETag i dat\u0119 w osobnych testach. Nie bada wsp\u00f3lnego pierwsze\u0144stwa warunk\u00f3w ani pe\u0142nej pami\u0119ci przegl\u0105darki. Licznik bajt\u00f3w mierzy zdekodowan\u0105 tre\u015b\u0107 do 256 KiB, a nie ca\u0142y skompresowany ruch sieciowy. Ostrze\u017cenie obejmuje te\u017c zmieniony ETag z odpowiedzi\u0105 200, cho\u0107 takie zachowanie mo\u017ce by\u0107 poprawne. Czas heurystyczny i klasy wymagaj\u0105 zatem interpretacji.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2><h3>Co obowi\u0105zuje przy obu warunkach w \u017c\u0105daniu?<\/h3><p>If-None-Match ma pierwsze\u0144stwo; przy obecno\u015bci tego pola If-Modified-Since zostaje pomini\u0119te. Pasuj\u0105ca data nie zast\u0119puje wi\u0119c niepasuj\u0105cego ETagu. Znaczenie ma rzeczywiste \u017c\u0105danie klienta; nie ka\u017cda przegl\u0105darka zawsze odsy\u0142a oba pola przy ka\u017cdej wizycie.<\/p><h3>Czy s\u0142aby ETag wystarczy do 304?<\/h3><p>Tak. If-None-Match stosuje por\u00f3wnanie s\u0142abe: <code>W\/\"abc\"<\/code> i <code>\"abc\"<\/code> pasuj\u0105. Nie czyni to s\u0142abego tagu odpowiednim do testu If-Range z tagiem encji ani do silnego por\u00f3wnania If-Match.<\/p><h3>Czy ka\u017cde 200 dowodzi usterki?<\/h3><p>Nie. Zmieniona reprezentacja zwykle wymaga nowej tre\u015bci. Diagnoza obejmuje \u017c\u0105danie, wybrany wariant i zwr\u00f3cony walidator. Widok sieciowy przegl\u0105darki, logi serwera oraz testy automatyczne r\u00f3wnie\u017c mog\u0105 ujawni\u0107 problem; curl jest kolejn\u0105 metod\u0105.<\/p><h3>Czy 304 oszcz\u0119dza obiegu sieciowego?<\/h3><p>Nie. Walidacja przez sie\u0107 nadal wymaga odpowiedzi, by\u0107 mo\u017ce z po\u015bredniej pami\u0119ci zamiast serwera \u017ar\u00f3d\u0142owego. \u015awie\u017cy wpis nadaj\u0105cy si\u0119 do u\u017cycia mo\u017ce ca\u0142kowicie oszcz\u0119dzi\u0107 \u017c\u0105dania. Wersjonowane pliki statyczne mog\u0105 mie\u0107 d\u0142u\u017csz\u0105 \u015bwie\u017co\u015b\u0107, je\u017celi ka\u017cda zmiana tre\u015bci oznacza nowy URL.<\/p><\/div>\n<div class=\"lw-quellen\"><h2>\u0179r\u00f3d\u0142a<\/h2><ul><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9110.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9110: znaczenie element\u00f3w protoko\u0142u HTTP<\/a><\/li><li><a href=\"https:\/\/www.rfc-editor.org\/rfc\/rfc9111.html\" target=\"_blank\" rel=\"noopener noreferrer\">RFC 9111: pami\u0119\u0107 podr\u0119czna HTTP<\/a><\/li><li><a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_deflate.html#deflatealteretag\" target=\"_blank\" rel=\"noopener noreferrer\">Apache: DeflateAlterETag<\/a><\/li><li><a href=\"https:\/\/httpd.apache.org\/docs\/2.4\/mod\/mod_brotli.html#brotlialteretag\" target=\"_blank\" rel=\"noopener noreferrer\">Apache: BrotliAlterETag<\/a><\/li><li><a href=\"https:\/\/curl.se\/docs\/manpage.html\" target=\"_blank\" rel=\"noopener noreferrer\">Podr\u0119cznik curl<\/a><\/li><\/ul><\/div>\n","protected":false},"excerpt":{"rendered":"<p>\u017b\u0105dania warunkowe mog\u0105 oszcz\u0119dza\u0107 tre\u015b\u0107 odpowiedzi, a \u015bwie\u017ce wpisy pami\u0119ci nawet ca\u0142e \u017c\u0105dania. Historyczna pr\u00f3ba dwudziestu odpowiedzi pokazuje brakuj\u0105ce walidatory, granice interpretacji i pu\u0142apk\u0119 ETagu przy kompresji.<\/p>\n","protected":false},"author":1,"featured_media":31081,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[154],"tags":[92421,92238,92283],"class_list":["post-15687","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>Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.\" \/>\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\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-11-09T17:55:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.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=\"6 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\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie\",\"datePublished\":\"2026-11-09T17:55:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/\"},\"wordCount\":1136,\"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\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-15687.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\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/\",\"name\":\"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | 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\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-15687.png\",\"datePublished\":\"2026-11-09T17:55:00+00:00\",\"description\":\"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-15687.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-15687.png\",\"width\":1200,\"height\":630,\"caption\":\"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/tworzenie-stron-internetowych\\\/tutorials-pl-tworzenie-stron-internetowych\\\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie\"}]},{\"@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":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | Lukas Wojcik","description":"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.","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\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/","og_locale":"en_US","og_type":"article","og_title":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | Lukas Wojcik","og_description":"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-11-09T17:55:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie","datePublished":"2026-11-09T17:55:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/"},"wordCount":1136,"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\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.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\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/","name":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie | 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\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.png","datePublished":"2026-11-09T17:55:00+00:00","description":"Jak dzia\u0142a \u017c\u0105danie warunkowe, dlaczego jedena\u015bcie z dwudziestu stron g\u0142\u00f3wnych nie niesie walidatora i arkusz styl\u00f3w, kt\u00f3ry nigdy nie odpowiada\u0142 304.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-15687.png","width":1200,"height":630,"caption":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/tworzenie-stron-internetowych\/tutorials-pl-tworzenie-stron-internetowych\/wczytywanie-stron-z-pamieci-podrecznej-kiedy-etag-i-last-modified-ograniczaja-pobieranie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Wczytywanie stron z pami\u0119ci podr\u0119cznej: kiedy ETag i Last-Modified ograniczaj\u0105 pobieranie"}]},{"@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\/15687","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=15687"}],"version-history":[{"count":9,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15687\/revisions"}],"predecessor-version":[{"id":30364,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/15687\/revisions\/30364"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/31081"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=15687"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=15687"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=15687"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}