{"id":16581,"date":"2026-01-05T18:23:33","date_gmt":"2026-01-05T17:23:33","guid":{"rendered":"https:\/\/webhosting.de\/http-cache-headers-sabotieren-caching-cachefix\/"},"modified":"2026-01-05T18:23:33","modified_gmt":"2026-01-05T17:23:33","slug":"http-cache-headers-sabotieren-caching-cachefix","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/http-cache-headers-sabotieren-caching-cachefix\/","title":{"rendered":"Nag\u0142\u00f3wki pami\u0119ci podr\u0119cznej HTTP: jak sabotuj\u0105 one strategi\u0119 buforowania"},"content":{"rendered":"<p>Nag\u0142\u00f3wki pami\u0119ci podr\u0119cznej HTTP decyduj\u0105 o tym, w jaki spos\u00f3b przegl\u0105darki i serwery proxy buforuj\u0105 tre\u015bci \u2013 nieprawid\u0142owo skonfigurowane spowalniaj\u0105 czas \u0142adowania i znacznie zwi\u0119kszaj\u0105 obci\u0105\u017cenie serwera. W tym artykule poka\u017c\u0119, jak niewielkie b\u0142\u0119dy w nag\u0142\u00f3wkach mog\u0105 wp\u0142yn\u0105\u0107 na Twoj\u0105 <strong>Strategia buforowania<\/strong> sabotowa\u0107 i jak dzi\u0119ki kilku poprawkom osi\u0105gn\u0105\u0107 wymiern\u0105 popraw\u0119 szybko\u015bci.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Poni\u017csze kluczowe informacje pomagaj\u0105 mi szybko sprawdza\u0107 nag\u0142\u00f3wki HTTP i utrzymywa\u0107 je w czysto\u015bci.<\/p>\n<ul>\n  <li><strong>TTL<\/strong> W\u0142a\u015bciwy wyb\u00f3r: bardzo d\u0142ugie buforowanie zasob\u00f3w statycznych, kr\u00f3tkie i kontrolowane buforowanie HTML.<\/li>\n  <li><strong>Walidacja<\/strong> Korzy\u015bci: ETag i Last-Modified zmniejszaj\u0105 liczb\u0119 niepotrzebnych \u017c\u0105da\u0144.<\/li>\n  <li><strong>Konflikty<\/strong> Unikaj: nag\u0142\u00f3wki Origin i CDN musz\u0105 by\u0107 zgodne.<\/li>\n  <li><strong>Wersjonowanie<\/strong> Zastosowanie: skr\u00f3ty plik\u00f3w umo\u017cliwiaj\u0105 agresywne strategie buforowania.<\/li>\n  <li><strong>Monitoring<\/strong> ustanowi\u0107: mierzy\u0107 wska\u017anik HIT i systematycznie go zwi\u0119ksza\u0107.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/http-cache-header-debug-3471.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Co naprawd\u0119 kontroluj\u0105 nag\u0142\u00f3wki pami\u0119ci podr\u0119cznej HTTP<\/h2>\n\n<p>Cache-Control, Expires, ETag i Last-Modified okre\u015blaj\u0105, czy tre\u015bci s\u0105 aktualne, jak d\u0142ugo s\u0105 wa\u017cne i kiedy przegl\u0105darka wysy\u0142a zapytanie. Dzi\u0119ki <strong>maksymalny wiek<\/strong> definiuj\u0119 czas \u017cycia, a public\/private lokalizacj\u0119 przechowywania w przegl\u0105darce lub wsp\u00f3\u0142dzielonych pami\u0119ciach podr\u0119cznych. Dyrektywy takie jak <strong>no-store<\/strong> ca\u0142kowicie uniemo\u017cliwiaj\u0105 zapisywanie, no-cache wymusza ponown\u0105 walidacj\u0119 przed u\u017cyciem. W przypadku plik\u00f3w statycznych warto ustawi\u0107 wa\u017cno\u015b\u0107 na rok, HTML otrzymuje kr\u00f3tkie czasy z inteligentn\u0105 ponown\u0105 walidacj\u0105. Dodatkowo opieram si\u0119 na <strong>niezmienny<\/strong>, je\u015bli pliki pozostaj\u0105 niezmienione dzi\u0119ki wersji hash.<\/p>\n\n<p>Sterowanie to ma bezpo\u015bredni wp\u0142yw na op\u00f3\u017anienia, przepustowo\u015b\u0107 i obci\u0105\u017cenie serwera. Zwi\u0119kszona <strong>Wska\u017anik HIT<\/strong> skraca czas oczekiwania i zmniejsza nak\u0142ad pracy backendowej. Dodatkowo optymalizuj\u0119 transmisj\u0119 za pomoc\u0105 <a href=\"https:\/\/webhosting.de\/pl\/konfiguracja-kompresji-http-optymalizacja-wydajnosci\/\">Kompresja HTTP<\/a>, aby zmniejszy\u0107 ilo\u015b\u0107 przesy\u0142anych bajt\u00f3w. Dok\u0142adne rozdzielenie tych element\u00f3w odci\u0105\u017ca zar\u00f3wno sieci CDN, serwery proxy, jak i pami\u0119ci podr\u0119czne przegl\u0105darek. W ten spos\u00f3b zapewniam p\u0142ynne <strong>Czasy \u0142adowania<\/strong> przez.<\/p>\n\n<h2>Planowanie TTL w praktyce<\/h2>\n\n<p>Odpowiedni TTL wynika z cz\u0119stotliwo\u015bci zmian, ryzyka i strategii powrotu. W przypadku zasob\u00f3w z hashami plik\u00f3w ustawiam 12 miesi\u0119cy, poniewa\u017c kontroluj\u0119 zmiany za pomoc\u0105 nowych nazw plik\u00f3w. W przypadku HTML kieruj\u0119 si\u0119 dynamik\u0105 tre\u015bci: strony startowe lub strony kategorii cz\u0119sto pozostaj\u0105 aktualne przez 1\u20135 minut, a strony szczeg\u00f3\u0142owe z komentarzami przez kr\u00f3tszy czas. Wa\u017cne jest, aby <strong>\u015acie\u017cka przywracania<\/strong>: Je\u015bli jednak b\u0142\u0105d zostanie opublikowany, potrzebuj\u0119 szybkiego czyszczenia (Edge) i wymuszonej ponownej walidacji (must-revalidate) dla przegl\u0105darek. Odpowiedzi API otrzymuj\u0105 kr\u00f3tkie TTL, ale z <em>stale<\/em>-Dyrektywy, aby u\u017cytkownicy widzieli odpowiedzi w przypadku b\u0142\u0119du. Dokumentuj\u0119 te profile dla ka\u017cdej trasy lub typu pliku i umieszczam je w potoku kompilacji\/wdra\u017cania, aby \u017cadne \u201eciche\u201c zmiany nie uniewa\u017cni\u0142y nieumy\u015blnie polityki aktualizacji.<\/p>\n\n<h2>Jak b\u0142\u0119dne konfiguracje sabotuj\u0105 strategi\u0119<\/h2>\n\n<p>Za kr\u00f3tkie <strong>TTL<\/strong> jak max-age=60 sekund w CSS, JS lub obrazach powoduje ci\u0105g\u0142e zapytania i niweluje zalety pami\u0119ci podr\u0119cznej. Globalne <strong>no-cache<\/strong> w konfiguracjach CMS spowalnia nawet wtedy, gdy du\u017ce cz\u0119\u015bci strony s\u0105 w rzeczywisto\u015bci stabilne. W przypadku braku ETag lub Last-Modified przegl\u0105darka \u0142aduje pliki ca\u0142kowicie od nowa, zamiast sprawdzi\u0107 je w inteligentny spos\u00f3b. Zb\u0119dne ci\u0105gi zapyta\u0144 powoduj\u0105 fragmentacj\u0119. <strong>Klucze pami\u0119ci podr\u0119cznej<\/strong> i znacznie obni\u017caj\u0105 wsp\u00f3\u0142czynnik HIT. Je\u015bli Origin wysy\u0142a no-cache, CDN ignoruje pami\u0119ci podr\u0119czne brzegowe, co powoduje wyd\u0142u\u017cenie \u015bcie\u017cek i zwi\u0119kszenie obci\u0105\u017cenia serwera.<\/p>\n\n<p>Wynik widz\u0119 w metrykach: wi\u0119cej zapyta\u0144, wy\u017csze <strong>czas procesora<\/strong> i wyd\u0142u\u017caj\u0105ce si\u0119 czasy odpowiedzi. W okresach szczytowego ruchu wzrasta ryzyko wyst\u0105pienia przekroczenia limitu czasu. Jednocze\u015bnie ro\u015bnie zu\u017cycie przepustowo\u015bci, bez odczuwalnych korzy\u015bci dla u\u017cytkownik\u00f3w. Dzi\u0119ki DevTools szybko rozpoznaj\u0119 takie wzorce. Najpierw zmieniam ustawienia <strong>Kontrola pami\u0119ci podr\u0119cznej<\/strong>, zanim zwi\u0119ksz\u0119 zasoby serwera.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/httpcachemeeting_7294.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Zalecenia dla poszczeg\u00f3lnych typ\u00f3w tre\u015bci: odpowiednie wytyczne<\/h2>\n\n<p>W zale\u017cno\u015bci od rodzaju tre\u015bci stosuj\u0119 r\u00f3\u017cne <strong>Nag\u0142\u00f3wek<\/strong>, aby pami\u0119ci podr\u0119czne dzia\u0142a\u0142y prawid\u0142owo, a u\u017cytkownicy widzieli aktualne dane. Poni\u017csza tabela przedstawia sprawdzone profile, kt\u00f3rych u\u017cywam w projektach.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Tre\u015b\u0107<\/th>\n      <th>Zalecane sterowanie pami\u0119ci\u0105 podr\u0119czn\u0105<\/th>\n      <th>Wa\u017cno\u015b\u0107<\/th>\n      <th>Wskaz\u00f3wka<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>JS\/CSS\/obrazy (wersjonowane)<\/td>\n      <td>publiczne, max-age=31536000, <strong>niezmienny<\/strong><\/td>\n      <td>12 miesi\u0119cy<\/td>\n      <td>U\u017cyj nazwy pliku z hash (np. app.abc123.js)<\/td>\n    <\/tr>\n    <tr>\n      <td>Pliki czcionek (woff2)<\/td>\n      <td>publiczne, max-age=31536000, niezmienne<\/td>\n      <td>12 miesi\u0119cy<\/td>\n      <td>Uwzgl\u0119dnij CORS, je\u015bli \u0142adowane z CDN<\/td>\n    <\/tr>\n    <tr>\n      <td>HTML (publiczny)<\/td>\n      <td>public, max-age=300, stale-while-revalidate=86400<\/td>\n      <td>5 minut<\/td>\n      <td>Kr\u00f3tki <strong>\u015awie\u017co\u015b\u0107<\/strong>, p\u0142ynne prze\u0142adowywanie w tle<\/td>\n    <\/tr>\n    <tr>\n      <td>HTML (spersonalizowany)<\/td>\n      <td>private, max-age=0, no-cache<\/td>\n      <td>rewalidacja<\/td>\n      <td>Brak przekazywania do wsp\u00f3\u0142dzielonych pami\u0119ci podr\u0119cznych<\/td>\n    <\/tr>\n    <tr>\n      <td>Interfejsy API<\/td>\n      <td>publiczne, max-age=60\u2013300, stale-if-error=86400<\/td>\n      <td>1\u20135 minut<\/td>\n      <td>B\u0142\u0105d z <strong>stale<\/strong> amortyzowa\u0107<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<p>Profile te obejmuj\u0105 typowe witryny i pomagaj\u0105 szybko uzyska\u0107 sp\u00f3jne <strong>Zasady<\/strong> . Wa\u017cne jest jasne wersjonowanie zasob\u00f3w, aby d\u0142ugie warto\u015bci max-age nie dostarcza\u0142y nieaktualnych plik\u00f3w. HTML pozostaje kr\u00f3tkotrwa\u0142y i jest aktualizowany poprzez ponown\u0105 walidacj\u0119. API otrzymuj\u0105 kr\u00f3tkie czasy i zabezpieczenie poprzez stale-if-error. Dzi\u0119ki temu strony pozostaj\u0105 dost\u0119pne nawet w przypadku awarii. <strong>u\u017cyteczny<\/strong>.<\/p>\n\n<h2>Prawid\u0142owe buforowanie kod\u00f3w b\u0142\u0119d\u00f3w i przekierowa\u0144<\/h2>\n\n<p>Przekierowania i strony b\u0142\u0119d\u00f3w wymagaj\u0105 osobnych zasad. <strong>301\/308<\/strong> (sta\u0142e) mog\u0105 by\u0107 przechowywane w pami\u0119ci podr\u0119cznej CDN i przegl\u0105darek przez bardzo d\u0142ugi czas; cz\u0119sto ustawiam tutaj dni lub tygodnie, aby unikn\u0105\u0107 \u0142a\u0144cuch\u00f3w przekierowa\u0144. <strong>302\/307<\/strong> (tymczasowe) otrzymuj\u0105 kr\u00f3tkie TTL, w przeciwnym razie stany tymczasowe zostan\u0105 \u201ezamro\u017cone\u201c. W przypadku 404\/410 warto zastosowa\u0107 umiarkowan\u0105 aktualno\u015b\u0107 (np. od minut do godzin), aby boty i u\u017cytkownicy nie wysy\u0142ali ci\u0105g\u0142ych zapyta\u0144; w przypadku cz\u0119sto zmieniaj\u0105cych si\u0119 tre\u015bci uwa\u017cam, \u017ce 404 powinno by\u0107 raczej kr\u00f3tkie. <strong>5xx<\/strong>Zasadniczo nie buforuj\u0119 b\u0142\u0119d\u00f3w, ale opieram si\u0119 na stale-if-error, aby tymczasowo dostarcza\u0107 dzia\u0142aj\u0105ce kopie. W ten spos\u00f3b platforma pozostaje stabilna, a ja zmniejszam obci\u0105\u017cenie zwi\u0105zane z ponownym renderowaniem w przypadku cz\u0119sto \u017c\u0105danych, ale brakuj\u0105cych \u015bcie\u017cek.<\/p>\n\n<h2>Prawid\u0142owe stosowanie walidacji: ETag i Last-Modified<\/h2>\n\n<p>Z <strong>ETag<\/strong> i Last-Modified przegl\u0105darka sprawdza, czy zas\u00f3b naprawd\u0119 musi zosta\u0107 ponownie za\u0142adowany. Klient wysy\u0142a If-None-Match lub If-Modified-Since, a serwer idealnie odpowiada 304 zamiast 200. W ten spos\u00f3b oszcz\u0119dzam transfer i zmniejszam <strong>Ruch uliczny<\/strong> wyra\u017anie. W przypadku plik\u00f3w statycznych cz\u0119sto wystarcza Last-Modified, natomiast w przypadku tre\u015bci generowanych dynamicznie stosuj\u0119 ETagi. Wa\u017cne: sp\u00f3jne generowanie ETag\u00f3w, aby pami\u0119ci podr\u0119czne rozpoznawa\u0142y trafienia.<\/p>\n\n<p>Lubi\u0119 \u0142\u0105czy\u0107 walidacj\u0119 z <strong>stale<\/strong>-Dyrektywy. stale-while-revalidate zapewnia szybkie dzia\u0142anie stron podczas aktualizacji w tle. stale-if-error zapewnia niezawodno\u015b\u0107 w przypadku problem\u00f3w z zapleczem. Dzi\u0119ki temu do\u015bwiadczenia u\u017cytkownik\u00f3w pozostaj\u0105 stabilne, a serwery s\u0105 chronione. Poni\u017csze fragmenty kodu pokazuj\u0105 typowe ustawienia, kt\u00f3rych u\u017cywam.<\/p>\n\n<pre><code>Header set Cache-Control \"public, max-age=31536000, immutable\"\n \/etc\/nginx\/conf.d\/caching.conf location ~* .(css|js|png|jpg|svg|woff2)$ { add_header Cache-Control \"public, max-age=31536000, immutable\"; }\n<\/code><\/pre>\n\n<h2>Zaawansowane dyrektywy i szczeg\u00f3\u0142y<\/h2>\n\n<p>Opr\u00f3cz max-age u\u017cywam celowo <strong>s-maxage<\/strong>, aby wype\u0142nia\u0107 pami\u0119ci podr\u0119czne brzegowe d\u0142u\u017cej ni\u017c przegl\u0105darki. Dzi\u0119ki temu CDN mo\u017ce dzia\u0142a\u0107 np. przez 1 godzin\u0119, podczas gdy klienci ponownie weryfikuj\u0105 si\u0119 po 5 minutach. <strong>musisz ponownie potwierdzi\u0107<\/strong> zmusza przegl\u0105darki do sprawdzania wygas\u0142ych kopii przed u\u017cyciem \u2013 wa\u017cne w obszarach zwi\u0105zanych z bezpiecze\u0144stwem. <strong>proxy-revalidate<\/strong> kieruje obowi\u0105zek do wsp\u00f3\u0142dzielonych skrytek. Z <strong>bez transformacji<\/strong> zapobiegam niepo\u017c\u0105danym zmianom obraz\u00f3w lub kompresji przez serwery proxy. Aby zapewni\u0107 szerok\u0105 kompatybilno\u015b\u0107, opr\u00f3cz Cache-Control wysy\u0142am opcjonalnie <strong>Wygasa<\/strong>-Data w przysz\u0142o\u015bci (zasoby) lub przesz\u0142o\u015bci (HTML), nawet je\u015bli nowoczesne pami\u0119ci podr\u0119czne uwzgl\u0119dniaj\u0105 przede wszystkim kontrol\u0119 pami\u0119ci podr\u0119cznej. W strategiach CDN rozdzielam regu\u0142y przegl\u0105darki i regu\u0142y brzegowe: public + max-age dla klient\u00f3w oraz s-maxage\/Surrogate-Control dla brzeg\u00f3w. Takie rozdzielenie maksymalizuje wsp\u00f3\u0142czynniki HIT bez ryzyka wyst\u0105pienia problem\u00f3w ze starej wersji na urz\u0105dzeniach ko\u0144cowych.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/http-cache-header-fehler-3017.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Wsp\u00f3\u0142praca z CDN i pami\u0119ci\u0105 podr\u0119czn\u0105 brzegow\u0105<\/h2>\n\n<p>CDN szanuje <strong>Nag\u0142\u00f3wek Origin<\/strong> \u2013 nieprawid\u0142owe dyrektywy u \u017ar\u00f3d\u0142a wy\u0142\u0105czaj\u0105 globalne pami\u0119ci podr\u0119czne. W przypadku pami\u0119ci podr\u0119cznych wsp\u00f3\u0142u\u017cytkowanych ustawiam public i, w razie potrzeby, s-maxage, aby kraw\u0119dzie utrzymywa\u0142y si\u0119 d\u0142u\u017cej ni\u017c przegl\u0105darki. Surrogate-Control mo\u017ce dodatkowo dostarcza\u0107 regu\u0142y dla pami\u0119ci podr\u0119cznych kraw\u0119dzi. Je\u015bli no-cache trafi do \u017ar\u00f3d\u0142a, CDN odrzuca \u017c\u0105danie. <strong>Przechowywanie<\/strong>. Dlatego \u015bwiadomie dostosowuj\u0119 strategi\u0119 przegl\u0105darki i CDN do siebie.<\/p>\n\n<p>W przypadku nowych projekt\u00f3w sprawdzam r\u00f3wnie\u017c strategie wst\u0119pnego \u0142adowania. Dzi\u0119ki <a href=\"https:\/\/webhosting.de\/pl\/http3-push-preload-optymalizacja-wydajnosci-strony-zoom\/\">HTTP\/3 Push &amp; Preload<\/a> Wcze\u015bnie \u0142aduj\u0119 krytyczne zasoby i ograniczam blokady renderowania. Technika ta nie zast\u0119puje buforowania, a jedynie je uzupe\u0142nia. W po\u0142\u0105czeniu z d\u0142ugimi czasami TTL dla zasob\u00f3w znacznie poprawia si\u0119 wydajno\u015b\u0107 startowa. W ten spos\u00f3b pracuj\u0119 nad rankingiem sieciowym, zanim <strong>Serwer<\/strong> w og\u00f3le si\u0119 poci.<\/p>\n\n<h2>Szczeg\u00f3\u0142owy opis strategii Vary<\/h2>\n\n<p><strong>R\u00f3\u017cne<\/strong> decyduje, kt\u00f3re nag\u0142\u00f3wki zapytania generuj\u0105 nowe warianty. Uwa\u017cam, \u017ce Vary powinno by\u0107 minimalne: dla HTML zazwyczaj Accept-Encoding (kompresja) i ewentualnie j\u0119zyk; dla zasob\u00f3w najlepiej w og\u00f3le nie stosowa\u0107. Zbyt szerokie Vary (np. User-Agent) niszczy wsp\u00f3\u0142czynnik HIT. Jednocze\u015bnie nale\u017cy <strong>ETags<\/strong> die <em>specyficzne dla reprezentacji<\/em> Odzwierciedlanie wariantu: je\u015bli dostarczam gzip lub br, ETag obowi\u0105zuj\u0105 dla ka\u017cdego wariantu kodowania i ustawiam Vary: Accept-Encoding. Je\u015bli u\u017cywam s\u0142abych ETag (W\/), dbam o to, aby generowa\u0107 je sp\u00f3jnie, w przeciwnym razie pojawiaj\u0105 si\u0119 niepotrzebne 200. Czcionki lub obrazy powinny zazwyczaj funkcjonowa\u0107 bez Vary; w ten spos\u00f3b klucze pozostaj\u0105 stabilne. Moja zasada: najpierw nale\u017cy zdefiniowa\u0107, kt\u00f3re warianty s\u0105 niezb\u0119dne z technicznego punktu widzenia \u2013 dopiero potem rozszerzy\u0107 Vary, nigdy na odwr\u00f3t.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/httpcacheoffice0983.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorowanie i diagnostyka w DevTools<\/h2>\n\n<p>Zawsze zaczynam od <strong>Karta sieciowa<\/strong> narz\u0119dzi przegl\u0105darki. Tam widz\u0119, czy odpowiedzi pochodz\u0105 z pami\u0119ci podr\u0119cznej, jak stare s\u0105 i jakie dyrektywy maj\u0105 zastosowanie. Kolumny Age, Cache-Control i Status pomagaj\u0105 w szybkiej kontroli. Wska\u017anik HIT poni\u017cej 50% wskazuje na potrzeb\u0119 podj\u0119cia dzia\u0142a\u0144, a warto\u015bci docelowe 80% i wi\u0119cej s\u0105 realistyczne. W przypadku warto\u015bci odstaj\u0105cych najpierw sprawdzam odpowiednie nag\u0142\u00f3wki.<\/p>\n\n<p>Narz\u0119dzia takie jak PageSpeed lub GTmetrix potwierdzi\u0142y moje lokalne <strong>Pomiary<\/strong>. Nast\u0119pnie por\u00f3wnuj\u0119 wyniki przed i po wprowadzeniu zmian, aby okre\u015bli\u0107 korzy\u015bci. Je\u015bli dochodzi do tego du\u017ca ilo\u015b\u0107 transfer\u00f3w, konsekwentnie aktywuj\u0119 nowoczesn\u0105 kompresj\u0119. Dzi\u0119ki temu oszcz\u0119dzam kolejne milisekundy. W ten spos\u00f3b ka\u017cde dostrojenie potwierdzam twardymi <strong>Liczby<\/strong>.<\/p>\n\n<h2>Automatyczne kontrole i CI<\/h2>\n\n<p>Aby zasady nie uleg\u0142y erozji, osadzam kontrole nag\u0142\u00f3wk\u00f3w w CI. Definiuj\u0119 profile docelowe dla ka\u017cdej \u015bcie\u017cki i w ka\u017cdej kompilacji przeprowadzam wyrywkowe kontrole wzgl\u0119dem stagingu. Cz\u0119sto wystarczaj\u0105 proste kontrole pow\u0142oki:<\/p>\n\n<pre><code># Przyk\u0142ad: oczekiwane dyrektywy dla zasob\u00f3w wersjonowanych curl -sI https:\/\/example.org\/static\/app.abc123.js | grep -i \"cache-control\" # Oczekiwana kr\u00f3tkoterminowo\u015b\u0107 i ponowna walidacja dla HTML\ncurl -sI https:\/\/example.org\/ | egrep -i \"cache-control|etag|last-modified\" # Sprawdzanie nag\u0142\u00f3wk\u00f3w wieku i statusu pami\u0119ci podr\u0119cznej (je\u015bli dost\u0119pne) curl -sI https:\/\/example.org\/styles.css | egrep -i \"age|cache-status|x-cache\"\n<\/code><\/pre>\n\n<p>W po\u0142\u0105czeniu z testami syntetycznymi planuj\u0119 regularne \u201eaudyty nag\u0142\u00f3wk\u00f3w\u201c. Wyniki s\u0105 nast\u0119pnie wykorzystywane w kodzie infrastruktury. W ten spos\u00f3b pozostaj\u0105 one aktualne. <strong>Zasady<\/strong> stabilny \u2013 niezale\u017cnie od tego, kto ostatnio wprowadzi\u0142 zmiany w CMS, CDN lub konfiguracji serwera.<\/p>\n\n<h2>Optymalizacja hostingu: buforowanie stron, obiekt\u00f3w i kod\u00f3w operacyjnych<\/h2>\n\n<p>Opr\u00f3cz pami\u0119ci podr\u0119cznej przegl\u0105darki i CDN stawiam na <strong>Pami\u0119\u0107 podr\u0119czna serwera<\/strong>. Buforowanie stron dostarcza gotowe strony HTML, buforowanie obiekt\u00f3w buforuje wyniki baz danych, a OPcache zajmuje si\u0119 kodem bajtowym PHP. Warstwy te znacznie odci\u0105\u017caj\u0105 backend, je\u015bli nag\u0142\u00f3wki s\u0105 poprawnie ustawione. Tylko po\u0142\u0105czenie szybkich kraw\u0119dzi, zdrowych TTL i pami\u0119ci podr\u0119cznych serwera zapewnia prawdziwe warto\u015bci szczytowe. W ten spos\u00f3b utrzymuj\u0119 stabilny czas odpowiedzi, nawet je\u015bli <strong>Ruch uliczny<\/strong> wzrasta.<\/p>\n\n<p>Poni\u017cszy przegl\u0105d rynku pokazuje, na co zwracam uwag\u0119 przy wyborze hostingu. Wysoki wska\u017anik HIT, dost\u0119pno\u015b\u0107 Redis i dobra cena decyduj\u0105 o wyborze.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Dostawca hostingu<\/th>\n      <th>Wynik PageSpeed<\/th>\n      <th>Obs\u0142uga Redis<\/th>\n      <th>Cena (pakiet startowy)<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>webhoster.de<\/td>\n      <td>98\/100<\/td>\n      <td>Tak<\/td>\n      <td>4,99 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Inny1<\/td>\n      <td>92\/100<\/td>\n      <td>Opcjonalnie<\/td>\n      <td>6,99 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Inny2<\/td>\n      <td>89\/100<\/td>\n      <td>Nie<\/td>\n      <td>5,99 \u20ac<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/entwickler_httpcache_7291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Strategie uniewa\u017cniania i czyszczenia<\/h2>\n\n<p>Budowa pami\u0119ci podr\u0119cznej to tylko po\u0142owa sukcesu \u2013 <strong>Uniewa\u017cnienie<\/strong> decyduje o bezpiecze\u0144stwie i elastyczno\u015bci. W przypadku zasob\u00f3w wprowadzam zmiany za pomoc\u0105 skr\u00f3t\u00f3w plik\u00f3w, dzi\u0119ki czemu nie ma potrzeby przeprowadzania czyszczenia. W przypadku HTML i API planuj\u0119 ukierunkowane czyszczenie: po wdro\u017ceniu (krytyczne trasy), po opublikowaniu (tylko dotyczy to stron) lub po flagach funkcji. Ch\u0119tnie obs\u0142uguj\u0119 pami\u0119ci podr\u0119czne brzegowe za pomoc\u0105 tag\u00f3w\/kluczy, aby ca\u0142e <em>Grupy<\/em> zamiast usuwa\u0107 \u015bcie\u017cki pojedynczo. Tam, gdzie to mo\u017cliwe, u\u017cywam \u201eSoft Purge\u201c: tre\u015bci s\u0105 natychmiast oznaczane jako \u201enieaktualne\u201c i ponownie weryfikowane dopiero przy nast\u0119pnym zapytaniu. W ten spos\u00f3b unikam szczyt\u00f3w obci\u0105\u017cenia spowodowanych jednoczesnym ponownym pobieraniem danych. Wa\u017cne jest zorganizowane mapowanie: kt\u00f3re zdarzenia powoduj\u0105 kt\u00f3re czyszczenie? Ta logika powinna by\u0107 wersjonowana na platformie.<\/p>\n\n<h2>Bezpiecze\u0144stwo i ochrona danych: publiczne vs. prywatne<\/h2>\n\n<p>Spersonalizowane strony nale\u017c\u0105 do <strong>Prywatna pami\u0119\u0107 podr\u0119czna<\/strong> przegl\u0105darki, a nie w podzielonych pami\u0119ciach podr\u0119cznych. Dlatego dla takich tre\u015bci ustawiam private, max-age=0 lub no-cache. Publiczne strony HTML mog\u0105 uzyska\u0107 public z kr\u00f3tkim czasem aktualizacji. Je\u015bli zwracam uwag\u0119 na pliki cookie w \u017c\u0105daniu, zawarto\u015b\u0107 pozostaje czysto oddzielona. W ten spos\u00f3b zapobiegam niepo\u017c\u0105danemu dost\u0119powi obcych u\u017cytkownik\u00f3w. <strong>Dane<\/strong> inni widz\u0105.<\/p>\n\n<p>Jednocze\u015bnie stosuj\u0119 surowe zasady dotycz\u0105ce obszar\u00f3w p\u0142atno\u015bci i kont. no-store zapobiega przechowywaniu wra\u017cliwych odpowiedzi. W pozosta\u0142ej cz\u0119\u015bci witryny pozostaj\u0119 liberalny, aby zapewni\u0107 odpowiedni\u0105 wydajno\u015b\u0107. To wyra\u017ane rozdzielenie sprawia, \u017ce platforma dzia\u0142a szybko i bezpiecznie. Dokumentuj\u0119 <strong>Profile<\/strong>, aby wszyscy uczestnicy zachowali sp\u00f3jno\u015b\u0107.<\/p>\n\n<h2>Zrozumienie heurystycznego buforowania<\/h2>\n\n<p>W przypadku braku Cache-Control i Expires pami\u0119ci podr\u0119czne si\u0119gaj\u0105 po <strong>heurystyka<\/strong> powr\u00f3t \u2013 oko\u0142o procent czasu od ostatniej modyfikacji. Prowadzi to do trudnych do odtworzenia wynik\u00f3w i zmiennej aktualno\u015bci. Unikam takich automatyzm\u00f3w, wyra\u017anie oznaczaj\u0105c ka\u017cd\u0105 odpowiedni\u0105 tras\u0119 za pomoc\u0105 Cache-Control. Tam, gdzie Last-Modified jest niedok\u0142adne (np. w przypadku szablon\u00f3w dynamicznych), preferuj\u0119 ETag. W ten spos\u00f3b aktywnie kontroluj\u0119 aktualno\u015b\u0107 i uzyskuj\u0119 stabilne wska\u017aniki dla wszystkich klient\u00f3w.<\/p>\n\n<h2>\u017b\u0105dania zakresu i du\u017ce pliki<\/h2>\n\n<p>Dla medi\u00f3w i plik\u00f3w do pobrania <strong>Zasi\u0119g<\/strong>-Zapytania (206 Partial Content) odgrywaj\u0105 wa\u017cn\u0105 rol\u0119. Aktywuj\u0119 Accept-Ranges i dostarczam sp\u00f3jne ETag\/Last-Modified, aby przegl\u0105darki mog\u0142y ponownie wykorzysta\u0107 fragmenty. W przypadku segment\u00f3w wideo z wersjami (HLS\/DASH) ustawiam d\u0142ugie TTL; same manifesty pozostaj\u0105 kr\u00f3tkotrwa\u0142e. Wa\u017cne: prawid\u0142owe obs\u0142ugiwanie If-Range, aby cz\u0119\u015bciowe obszary nie prowadzi\u0142y do nieaktualnych stan\u00f3w mieszanych w przypadku zmian. W przypadku wra\u017cliwych tre\u015bci nadal obowi\u0105zuje zasada: nie przechowuj z no-store, nawet je\u015bli w gr\u0119 wchodzi Range.<\/p>\n\n<h2>Szybkie usuwanie cz\u0119stych b\u0142\u0119d\u00f3w: m\u00f3j podr\u0119cznik<\/h2>\n\n<p>Zaczn\u0119 od przegl\u0105du nag\u0142\u00f3wk\u00f3w: kt\u00f3re <strong>dyrektywy<\/strong> dostarcza Origin i co zmienia CDN? Nast\u0119pnie definiuj\u0119 profile TTL dla ka\u017cdego typu tre\u015bci. Zasoby wersjonowane otrzymuj\u0105 rok, HTML pi\u0119\u0107 minut plus ponowna walidacja. ETag\/Last-Modified aktywuj\u0119 wsz\u0119dzie tam, gdzie ma to sens. Nast\u0119pnie sprawdzam, czy niepotrzebne parametry Vary lub Query nie powoduj\u0105 <strong>Wska\u017anik HIT<\/strong> nacisn\u0105\u0107.<\/p>\n\n<p>W nast\u0119pnym kroku zajm\u0119 si\u0119 szczeg\u00f3\u0142ami sieciowymi poza pami\u0119ci\u0105 podr\u0119czn\u0105. Nieprawid\u0142owy <a href=\"https:\/\/webhosting.de\/pl\/naglowek-charset-spowalnia-dzialanie-serwera-strony-internetowej\/\">Nag\u0142\u00f3wek zestawu znak\u00f3w<\/a> lub brak kompresji r\u00f3wnie\u017c kosztuje czas. Nast\u0119pnie ponownie dokonuj\u0119 pomiar\u00f3w: DevTools, testy syntetyczne i, w razie potrzeby, monitorowanie rzeczywistych u\u017cytkownik\u00f3w. Je\u015bli warto\u015bci s\u0105 prawid\u0142owe, zamra\u017cam regu\u0142y w konfiguracji i przechowuj\u0119 je w wersji. W ten spos\u00f3b ro\u015bnie <strong>jako\u015b\u0107<\/strong> Krok po kroku.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/01\/http-cache-serverraum-8123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Z prawid\u0142owymi <strong>Nag\u0142\u00f3wki HTTP<\/strong> kontroluj\u0119, co gdzie i jak d\u0142ugo si\u0119 znajduje \u2013 i oszcz\u0119dzam czas oraz zasoby. D\u0142ugie TTL dla zasob\u00f3w wersjonowanych, kr\u00f3tkie czasy oraz ponowna walidacja dla HTML i sensowne dyrektywy stale zapewniaj\u0105 szybko\u015b\u0107 i odporno\u015b\u0107. Czyste klucze pami\u0119ci podr\u0119cznej, konsekwentne wersjonowanie i jasne zasady dotycz\u0105ce publicznego\/prywatnego zapobiegaj\u0105 typowym przeszkodom. Monitorowanie dostarcza dowod\u00f3w i pokazuje pozosta\u0142e luki. Kto post\u0119puje w ten spos\u00f3b, podnosi <strong>Wydajno\u015b\u0107<\/strong> wyra\u017anie i stabilnie.<\/p>","protected":false},"excerpt":{"rendered":"<p>Nag\u0142\u00f3wki pami\u0119ci podr\u0119cznej HTTP sabotuj\u0105 strategi\u0119 buforowania poprzez nieprawid\u0142ow\u0105 konfiguracj\u0119 buforowania. Dowiedz si\u0119, jak zoptymalizowa\u0107 hosting, aby uzyska\u0107 najwy\u017csz\u0105 wydajno\u015b\u0107!<\/p>","protected":false},"author":1,"featured_media":16574,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-16581","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-plesk-webserver-plesk-administration-anleitungen"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"1462","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"HTTP Cache Headers","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"16574","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/16581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/comments?post=16581"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/16581\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/16574"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=16581"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=16581"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=16581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}