{"id":12672,"date":"2025-09-21T08:38:11","date_gmt":"2025-09-21T06:38:11","guid":{"rendered":"https:\/\/webhosting.de\/serverseitiges-caching-nginx-apache-guide-leistung-turbo\/"},"modified":"2025-09-21T08:38:11","modified_gmt":"2025-09-21T06:38:11","slug":"buforowanie-po-stronie-serwera-nginx-apache-przewodnik-wydajnosc-turbo","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/serverseitiges-caching-nginx-apache-guide-leistung-turbo\/","title":{"rendered":"Konfiguracja buforowania po stronie serwera za pomoc\u0105 Nginx lub Apache - wi\u0119ksza wydajno\u015b\u0107 stron internetowych"},"content":{"rendered":"<p>Skonfigurowa\u0142em buforowanie po stronie serwera za pomoc\u0105 <strong>Nginx<\/strong> lub <strong>Apacz<\/strong> ustawi\u0107 jasne regu\u0142y pami\u0119ci podr\u0119cznej i monitorowa\u0107 wp\u0142yw na czasy odpowiedzi. W ten spos\u00f3b zauwa\u017calnie zmniejszam obci\u0105\u017cenie serwera, dostarczam wi\u0119cej \u017c\u0105da\u0144 na sekund\u0119 i utrzymuj\u0119 dynamiczne strony internetowe niezawodnie szybko przy du\u017cym obci\u0105\u017ceniu.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Zanim skonfiguruj\u0119 ustawienia, jasno okre\u015blam cele: Jakie tre\u015bci mog\u0105 by\u0107 zawarte w grze? <strong>Schowek<\/strong>jak d\u0142ugo i na jakim poziomie. Dla stron dynamicznych planuj\u0119 wyj\u0105tki dla <strong>Sesje<\/strong> i spersonalizowane dane. Wybieram odpowiedni\u0105 architektur\u0119 i sprawdzam, czy odwrotne proxy ma sens. Nast\u0119pnie dziel\u0119 konfiguracj\u0119 na czyste <strong>vHosts<\/strong> i systematycznie sprawdzam nag\u0142\u00f3wki. Wreszcie, zakotwiczam monitorowanie, aby m\u00f3c rzetelnie oceni\u0107 efekt ka\u017cdej zmiany.<\/p>\n<ul>\n  <li><strong>Architektura<\/strong> wyja\u015bnienie<\/li>\n  <li><strong>Typ pami\u0119ci podr\u0119cznej<\/strong> Zdefiniuj<\/li>\n  <li><strong>Nag\u0142\u00f3wek<\/strong> sterowa\u0107<\/li>\n  <li><strong>Uniewa\u017cnienie<\/strong> Plan<\/li>\n  <li><strong>Monitoring<\/strong> ustanowienie<\/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\/2025\/09\/nginx-caching-server-4872.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Podstawy: Co oznacza buforowanie po stronie serwera?<\/h2>\n\n<p>Buforowanie po stronie serwera zapisuje odpowiedzi na <strong>\u017b\u0105dania<\/strong> na serwerze internetowym, dzi\u0119ki czemu mog\u0119 dostarcza\u0107 cz\u0119sto \u017c\u0105dane tre\u015bci bez ponownego obliczania. Czas do pierwszego bajtu jest zauwa\u017calnie skr\u00f3cony, poniewa\u017c aplikacja, baza danych i system plik\u00f3w maj\u0105 mniej pracy do wykonania. Rozr\u00f3\u017cniam pami\u0119\u0107 podr\u0119czn\u0105 na poziomie proxy, pami\u0119\u0107 podr\u0119czn\u0105 FastCGI i pami\u0119\u0107 podr\u0119czn\u0105 plik\u00f3w dla plik\u00f3w statycznych. <strong>Aktywa<\/strong>. Wa\u017cne jest, aby mie\u0107 \u015bcis\u0142y plan dotycz\u0105cy tego, kt\u00f3re tre\u015bci s\u0105 uwa\u017cane za publiczne, a kt\u00f3re pozostaj\u0105 spersonalizowane. Dla ka\u017cdej regu\u0142y definiuj\u0119 czas \u017cycia (TTL) i jasne warunki opr\u00f3\u017cniania pami\u0119ci podr\u0119cznej.<\/p>\n\n<h2>Nginx i Apache - architektura i koncepcje pami\u0119ci podr\u0119cznej<\/h2>\n\n<p>Nginx dzia\u0142a <strong>sterowany zdarzeniami<\/strong> i dlatego bardzo dobrze nadaje si\u0119 do wysokiej r\u00f3wnoleg\u0142o\u015bci i szybkiego buforowania. Apache wykorzystuje procesy i w\u0105tki, ale oferuje bardzo elastyczny krajobraz modu\u0142\u00f3w, kt\u00f3ry mog\u0119 precyzyjnie kontrolowa\u0107. W przypadku tre\u015bci statycznych Nginx imponuje bardzo niskim obci\u0105\u017ceniem procesora, podczas gdy Apache zdobywa punkty dzi\u0119ki g\u0142\u0119bi funkcji dla aplikacji dynamicznych. Je\u015bli u\u017cywam odwrotnego proxy, prawie ka\u017cda aplikacja korzysta z kr\u00f3tszych czas\u00f3w odpowiedzi. Tutaj przedstawiam przegl\u0105d wydajno\u015bci Nginx jako odwrotnego serwera proxy: <a href=\"https:\/\/webhosting.de\/pl\/nginx-webserver-reverse-proxy-wydajnosc-skalowalnosc\/\">Nginx jako odwrotny serwer proxy<\/a>.<\/p>\n\n<p>Poni\u017csza tabela podsumowuje g\u0142\u00f3wne r\u00f3\u017cnice i pomaga mi znale\u017a\u0107 w\u0142a\u015bciw\u0105 ofert\u0119. <strong>Strategia<\/strong> do wyboru. Pozwala mi to lepiej kategoryzowa\u0107 wymagania, narz\u0119dzia i przysz\u0142e plany operacyjne. Bior\u0119 pod uwag\u0119 konserwacj\u0119, z\u0142o\u017cono\u015b\u0107 aplikacji i typowe szczyty obci\u0105\u017cenia. Im prostsza zawarto\u015b\u0107, tym wi\u0119kszy potencja\u0142 agresywno\u015bci <strong>Buforowanie<\/strong>. W przypadku bardzo dynamicznej zawarto\u015bci u\u017cywam okre\u015blonych wyj\u0105tk\u00f3w i kr\u00f3tszych czas\u00f3w TTL.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Kryterium<\/th>\n      <th>Apacz<\/th>\n      <th>Nginx<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Architektura oprogramowania<\/td>\n      <td>Oparte na procesach i w\u0105tkach<\/td>\n      <td>Sterowane zdarzeniami (asynchroniczne)<\/td>\n    <\/tr>\n    <tr>\n      <td>Zawarto\u015b\u0107 statyczna<\/td>\n      <td>Dobry<\/td>\n      <td>Bardzo szybko<\/td>\n    <\/tr>\n    <tr>\n      <td>Dynamiczna zawarto\u015b\u0107<\/td>\n      <td>Bardzo elastyczny (modu\u0142y)<\/td>\n      <td>Informacje o PHP-FPM\/Upstreams<\/td>\n    <\/tr>\n    <tr>\n      <td>Funkcje pami\u0119ci podr\u0119cznej<\/td>\n      <td>mod_cache, mod_file_cache<\/td>\n      <td>FastCGI Cache, Proxy Cache<\/td>\n    <\/tr>\n    <tr>\n      <td>Konfiguracja<\/td>\n      <td>Scentralizowane i za po\u015brednictwem .htaccess<\/td>\n      <td>Centralnie w pliku nginx.conf<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/09\/servercachingmeeting2038.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Konfiguracja Nginx: Pami\u0119\u0107 podr\u0119czna FastCGI krok po kroku<\/h2>\n\n<p>Najpierw definiuj\u0119 <strong>\u015acie\u017cka pami\u0119ci podr\u0119cznej<\/strong> i nazwan\u0105 stref\u0119, aby Nginx m\u00f3g\u0142 przechowywa\u0107 zawarto\u015b\u0107 w uporz\u0105dkowany spos\u00f3b. Nast\u0119pnie pod\u0142\u0105czam strumienie PHP (np. PHP-FPM) i aktywuj\u0119 fastcgi_cache w odpowiednich lokalizacjach. Dla aplikacji dynamicznych ustawiam <strong>Obej\u015bcie pami\u0119ci podr\u0119cznej<\/strong> dla plik\u00f3w cookie, takich jak PHPSESSID lub dla zalogowanych u\u017cytkownik\u00f3w, aby spersonalizowane strony pozosta\u0142y \u015bwie\u017ce. U\u017cywam fastcgi_cache_valid do przypisywania TTL dla kod\u00f3w statusu i zapewnienia kontrolowanego starzenia si\u0119 tre\u015bci. Dzi\u0119ki nag\u0142\u00f3wkowi X-FastCGI-Cache mog\u0119 sprawdzi\u0107, czy \u017c\u0105danie by\u0142o HIT, MISS lub BYPASS i odpowiednio udoskonali\u0107 moje regu\u0142y.<\/p>\n\n<h2>Konfiguracja Apache: bezpieczne korzystanie z mod_cache<\/h2>\n\n<p>W Apache aktywuj\u0119 mod_cache i mod_cache_disk lub backend pami\u0119ci wsp\u00f3\u0142dzielonej, w zale\u017cno\u015bci od <strong>Cel<\/strong>. W konfiguracji vHost specjalnie w\u0142\u0105czam CacheEnable, definiuj\u0119 warto\u015bci Expires i ignoruj\u0119 nag\u0142\u00f3wki takie jak Set-Cookie, je\u015bli zawarto\u015b\u0107 ma pozosta\u0107 publiczna. Aby uzyska\u0107 dok\u0142adniejsz\u0105 kontrol\u0119, u\u017cywam zakres\u00f3w plik\u00f3w i \u015bcie\u017cek, aby tylko odpowiednie <strong>Zasoby<\/strong> dosta\u0107 si\u0119 do pami\u0119ci podr\u0119cznej. Tam, gdzie aplikacja na to pozwala, odpowiednio ustawiam kontrol\u0119 pami\u0119ci podr\u0119cznej, tworz\u0105c w ten spos\u00f3b wyra\u017an\u0105 interakcj\u0119 mi\u0119dzy aplikacj\u0105 a serwerem. W przypadku regu\u0142 na poziomie katalogu, ta kompaktowa pomaga mi <a href=\"https:\/\/webhosting.de\/pl\/przewodnik-htaccess-konfiguracja-serwera-www\/\">Przewodnik .htaccess<\/a>.<\/p>\n\n<h2>Regu\u0142y pami\u0119ci podr\u0119cznej i przypadki brzegowe: pliki cookie, sesje, ci\u0105gi zapyta\u0144<\/h2>\n\n<p>Blokuj\u0119 spersonalizowane <strong>Odpowiedzi<\/strong> konsekwentnie z buforowania, na przyk\u0142ad przy u\u017cyciu plik\u00f3w cookie sesji. W przypadku ci\u0105g\u00f3w zapyta\u0144 rozr\u00f3\u017cniam rzeczywiste warianty (np. paginacj\u0119) i parametry \u015bledzenia, kt\u00f3re usuwam lub ignoruj\u0119. W przypadku interfejs\u00f3w API lub wynik\u00f3w wyszukiwania przypisuj\u0119 kr\u00f3tkie czasy TTL lub ustawiam je ca\u0142kowicie na NO-CACHE, aby unikn\u0105\u0107 fa\u0142szywych alarm\u00f3w. <strong>Hity<\/strong> do unikni\u0119cia. Nie cache'uj\u0119 plik\u00f3w do pobrania i formularzy POST, ale mog\u0119 agresywnie cache'owa\u0107 miniatury i zasoby. W przypadku stron docelowych z szybk\u0105 kampani\u0105 planuj\u0119 kr\u00f3tkie, ale skuteczne TTL oraz szybkie uniewa\u017cnianie po wprowadzeniu zmian.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2025\/09\/server-caching-nginx-apache-8472.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Monitorowanie i debugowanie: Zrozumienie wska\u017anik\u00f3w trafie\u0144 pami\u0119ci podr\u0119cznej<\/h2>\n\n<p>Obserwuj\u0119 X-Cache lub X-FastCGI-Cache w pliku <strong>Nag\u0142\u00f3wki odpowiedzi<\/strong> i mierzy\u0107 wsp\u00f3\u0142czynnik trafie\u0144 w czasie. Pliki dziennika i modu\u0142y stanu pokazuj\u0105 mi wykorzystanie, op\u00f3\u017anienia i sytuacje b\u0142\u0119d\u00f3w. Dzi\u0119ki kr\u00f3tkim testom po wprowadzeniu zmian sprawdzam, czy chybienia staj\u0105 si\u0119 trafieniami i czy nie otrzymano \u017cadnych wra\u017cliwych odpowiedzi. <strong>Schowek<\/strong> ziemia. Testy obci\u0105\u017ceniowe ujawniaj\u0105 gor\u0105ce \u015bcie\u017cki i pomagaj\u0105 udoskonali\u0107 okre\u015blone regu\u0142y. Pozwala mi to wcze\u015bnie rozpoznawa\u0107 w\u0105skie gard\u0142a i utrzymywa\u0107 responsywno\u015b\u0107 \u015brodowiska przy rzeczywistych szczytach obci\u0105\u017cenia.<\/p>\n\n<h2>Projekt klucza pami\u0119ci podr\u0119cznej i r\u00f3\u017cne strategie<\/h2>\n\n<p>Czysty klucz pami\u0119ci podr\u0119cznej okre\u015bla, czy r\u00f3\u017cne warianty s\u0105 czysto oddzielone, czy nieumy\u015blnie wymieszane. Definiuj\u0119 klucz \u015bwiadomie i bior\u0119 pod uwag\u0119 schemat, host, \u015bcie\u017ck\u0119 i odpowiednie parametry. Wykluczam parametry \u015bledzenia i uwzgl\u0119dniam rzeczywiste warianty (np. paginacj\u0119, sortowanie, j\u0119zyk). Na poziomie Nginx osi\u0105gam to za pomoc\u0105 zmiennych i map, w Apache za pomoc\u0105 okre\u015blonych regu\u0142 i przestrzegaj\u0105c zasady <strong>R\u00f3\u017cne<\/strong>-Nag\u0142\u00f3wek.<\/p>\n<ul>\n  <li><strong>Separacja host\u00f3w i protoko\u0142\u00f3w:<\/strong> Uwzgl\u0119dnij http\/https i domeny wyra\u017anie w kluczu, je\u015bli oba warianty istniej\u0105.<\/li>\n  <li><strong>Normalizacja ci\u0105g\u00f3w zapyta\u0144:<\/strong> Standaryzacja sekwencji, odrzucanie nieistotnych parametr\u00f3w, umieszczanie istotnych na bia\u0142ej li\u015bcie.<\/li>\n  <li><strong>Urz\u0105dzenie i warianty j\u0119zykowe:<\/strong> Pami\u0119\u0107 podr\u0119czna tylko wtedy, gdy jest czysto oddzielona (np. przez subdomen\u0119, \u015bcie\u017ck\u0119 lub jawny plik cookie); w przeciwnym razie istnieje ryzyko eksplozji klucza.<\/li>\n  <li><strong>Poprawnie ustaw nag\u0142\u00f3wek Vary:<\/strong> Accept-Encoding dla Gzip\/Brotli, opcjonalnie Accept-Language, nigdy Vary: *<\/li>\n  <li><strong>Rozwa\u017caj ciasteczka oszcz\u0119dnie:<\/strong> Uwzgl\u0119dniaj tylko te pliki cookie w decyzji, kt\u00f3re naprawd\u0119 wp\u0142ywaj\u0105 na wy\u015bwietlanie (np. status logowania).<\/li>\n<\/ul>\n<p>Zapobiega to zatruwaniu pami\u0119ci podr\u0119cznej i utrzymuje liczb\u0119 wariant\u00f3w obiekt\u00f3w pod kontrol\u0105. Mniejsza liczba wariant\u00f3w oznacza wy\u017cszy wsp\u00f3\u0142czynnik trafie\u0144 i ni\u017csze koszty przechowywania.<\/p>\n\n<h2>\u015awie\u017co\u015b\u0107, rewalidacja i nieaktualne strategie<\/h2>\n\n<p>\u0141\u0105cz\u0119 <strong>TTL<\/strong> z ponown\u0105 walidacj\u0105, aby zachowa\u0107 \u015bwie\u017co\u015b\u0107 i stabilno\u015b\u0107 tre\u015bci w tym samym czasie. W przypadku wsp\u00f3\u0142dzielonych pami\u0119ci podr\u0119cznych kluczowe znaczenie maj\u0105 s-maxage i kontrola pami\u0119ci podr\u0119cznej. Ponadto u\u017cywam strategii nie\u015bwie\u017co\u015bci, aby nadal dostarcza\u0107 szybkie odpowiedzi na problemy upstream.<\/p>\n<ul>\n  <li><strong>s-maxage vs. max-age:<\/strong> s-maxage kontroluje wsp\u00f3\u0142dzielone cache (proxy, CDN), max-age przegl\u0105darki. Dla HTML, cz\u0119sto ustawiam s-maxage na kilka minut, max-age na kr\u00f3tko lub zero.<\/li>\n  <li><strong>stale-while-revalidate:<\/strong> U\u017cytkownicy otrzymuj\u0105 stare odpowiedzi, podczas gdy aktualizacje s\u0105 przeprowadzane w tle. Pozwala to znacznie z\u0142agodzi\u0107 szczyty obci\u0105\u017cenia.<\/li>\n  <li><strong>stale-if-error:<\/strong> W przypadku b\u0142\u0119d\u00f3w 5xx kontynuuj\u0119 serwowanie z pami\u0119ci podr\u0119cznej, aby ukry\u0107 awarie.<\/li>\n  <li><strong>use_stale\/Background-Update:<\/strong> W Nginx u\u017cywam use_stale i aktualizacji w tle; w Apache u\u017cywam opcji takich jak CacheStaleOnError.<\/li>\n  <li><strong>ETag\/Last-Modified:<\/strong> Ponowna weryfikacja oszcz\u0119dza przepustowo\u015b\u0107, je\u015bli klient wysy\u0142a If-None-Match\/If-Modified-Since, a serwer zwraca 304.<\/li>\n<\/ul>\n<p>Dzi\u0119ki tej kombinacji uzyskuj\u0119 kr\u00f3tkie czasy odpowiedzi i niezawodne us\u0142ugi, nawet w przypadku wdro\u017ce\u0144 lub kr\u00f3tkoterminowych op\u00f3\u017anie\u0144 w sieci upstream.<\/p>\n\n<h2>Mikrobuforowanie i przechwytywanie szczyt\u00f3w obci\u0105\u017cenia<\/h2>\n\n<p>W przypadku bardzo dynamicznych stron, kt\u00f3re s\u0105 cz\u0119sto odpytywane, ale z podobnymi wynikami, u\u017cywam <strong>Microcaching<\/strong> na. Wyniki HTML s\u0105 buforowane przez 1-10 sekund, co zapobiega przedostawaniu si\u0119 1000 podobnych zapyta\u0144 do aplikacji w tym samym czasie.<\/p>\n<ul>\n  <li><strong>Kr\u00f3tki, ale skuteczny:<\/strong> TTL na poziomie 3-5 sekund znacznie zmniejsza obci\u0105\u017cenia szczytowe bez zauwa\u017cania nieaktualnych tre\u015bci przez u\u017cytkownik\u00f3w.<\/li>\n  <li><strong>Granulowany:<\/strong> Aktywuj tylko w hotspotach (strona startowa, strony kategorii, sugestie wyszukiwania), nie globalnie.<\/li>\n  <li><strong>Obej\u015bcie dla personalizacji:<\/strong> Pliki cookie sesji, koszyka lub logowania wykluczaj\u0105 mikrobuforowanie.<\/li>\n<\/ul>\n<p>Mikrobuforowanie jest korzystn\u0105 d\u017awigni\u0105 do obni\u017cania koszt\u00f3w i zwi\u0119kszania stabilno\u015bci przy du\u017cym nat\u0119\u017ceniu ruchu.<\/p>\n\n<h2>Unikaj st\u0142oczenia pami\u0119ci podr\u0119cznej: Blokowanie i limity<\/h2>\n\n<p>Z <strong>Grzmi\u0105cy piec<\/strong> wiele jednoczesnych \u017c\u0105da\u0144 uruchomionych na wygas\u0142ym obiekcie. Zapobiegam temu, blokuj\u0105c \u017c\u0105dania podczas tworzenia nowej kopii.<\/p>\n<ul>\n  <li><strong>Nginx:<\/strong> Aktywuj cache_lock dla cache proxy i FastCGI i rozs\u0105dnie dobieraj timeouty.<\/li>\n  <li><strong>Apache:<\/strong> U\u017cyj CacheLock, aby nie wszyscy pracownicy mogli korzysta\u0107 z aplikacji w tym samym czasie.<\/li>\n  <li><strong>Ograniczenie zasob\u00f3w:<\/strong> Odpowiednio zwymiaruj jednoczesne po\u0142\u0105czenia upstream, pracownik\u00f3w i g\u0142\u0119boko\u015b\u0107 kolejki.<\/li>\n<\/ul>\n<p>Ponadto, nieco d\u0142u\u017cszy s-maxage plus rewalidacja pomagaj\u0105 zapewni\u0107, \u017ce obiekty rzadko wypadaj\u0105 z pami\u0119ci podr\u0119cznej synchronicznie.<\/p>\n\n<h2>Decyzja: Kiedy Nginx, kiedy Apache, kiedy Varnish?<\/h2>\n\n<p>W przypadku tre\u015bci statycznych i aplikacji PHP z jasnymi regu\u0142ami pami\u0119ci podr\u0119cznej zwykle u\u017cywam <strong>Nginx<\/strong> z pami\u0119ci\u0105 podr\u0119czn\u0105 FastCGI. W przypadku z\u0142o\u017conych konfiguracji aplikacji z wieloma modu\u0142ami, \u0142a\u0144cuchami przepisywania i mieszanym dzia\u0142aniem r\u00f3\u017cnych j\u0119zyk\u00f3w skryptowych, cz\u0119sto u\u017cywam <strong>Apacz<\/strong>. Je\u015bli potrzebuj\u0119 dodatkowego buforowania brzegowego lub rozszerzonych polityk, umieszczam przed nim odwrotne proxy. Ten przewodnik stanowi dobry punkt wyj\u015bcia do skonfigurowania tego: <a href=\"https:\/\/webhosting.de\/pl\/konfiguracja-odwrotnego-proxy-apache-nginx-techboost\/\">Konfiguracja odwrotnego serwera proxy<\/a>. Wa\u017cne jest, aby prawid\u0142owo ustali\u0107 priorytety: najpierw poprawne nag\u0142\u00f3wki aplikacji, nast\u0119pnie buforowanie po stronie serwera, a na ko\u0144cu opcjonalne warstwy proxy.<\/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\/2025\/09\/caching-nginx-apache-night-9472.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Bezpiecze\u0144stwo i zgodno\u015b\u0107: Co jest dozwolone w pami\u0119ci podr\u0119cznej?<\/h2>\n\n<p>Wra\u017cliwy <strong>Dane<\/strong> zawsze pozostaj\u0105 na zewn\u0105trz: profile, koszyki zakup\u00f3w, przegl\u0105dy zam\u00f3wie\u0144, bilety, informacje o pacjentach, obszary administracyjne. Ustawiam wyra\u017ane nag\u0142\u00f3wki kontroli pami\u0119ci podr\u0119cznej, aby serwery proxy i przegl\u0105darki nie przechowywa\u0142y \u017cadnych poufnych tre\u015bci. W przypadku plik\u00f3w cookie u\u017cywam SameSite, HttpOnly i Secure oraz konsekwentnie oddzielam spersonalizowane \u015bcie\u017cki. Rejestruj\u0119 r\u00f3wnie\u017c nietypowe dost\u0119py, aby szybko rozpozna\u0107 b\u0142\u0119dne konfiguracje. Pozwala to utrzyma\u0107 wysok\u0105 wydajno\u015b\u0107 bez nara\u017cania poufno\u015bci.<\/p>\n\n<h2>Polityka nag\u0142\u00f3wk\u00f3w w praktyce<\/h2>\n\n<p>Definiuj\u0119 sp\u00f3jny zestaw nag\u0142\u00f3wk\u00f3w, aby wszystkie poziomy dzia\u0142a\u0142y w ten sam spos\u00f3b i nie wysy\u0142a\u0142y sprzecznych instrukcji.<\/p>\n<ul>\n  <li><strong>HTML (publiczny, ale kr\u00f3tkotrwa\u0142y):<\/strong> Cache-Control: public, s-maxage a few minutes, max-age rather 0-60s, must-revalidate if necessary; ETag\/Last-Modified active.<\/li>\n  <li><strong>Aktywa (d\u0142ugotrwa\u0142e):<\/strong> Cache-Control: public, max-age 1 year, immutable; nazwy plik\u00f3w wersji (odciski palc\u00f3w), abym m\u00f3g\u0142 wdro\u017cy\u0107 bez Purge.<\/li>\n  <li><strong>Spersonalizowane strony:<\/strong> Cache-Control: no-store, private; Set-Cookie tylko w razie potrzeby. Nigdy nie udost\u0119pniaj nag\u0142\u00f3wka autoryzacji.<\/li>\n  <li><strong>Przekierowania i 404:<\/strong> 301 mo\u017ce \u017cy\u0107 przez d\u0142ugi czas, 302\/307 tylko przez kr\u00f3tki czas; 404 buforuje przez kr\u00f3tki czas, wi\u0119c b\u0142\u0119dy nie s\u0105 naprawiane.<\/li>\n  <li><strong>Kompresja:<\/strong> Aktywuj Gzip\/Brotli i ustaw Vary: Accept-Encoding, aby warianty by\u0142y poprawnie rozdzielane.<\/li>\n<\/ul>\n<p>Dzi\u0119ki temu zachowanie jest przejrzyste - zar\u00f3wno dla przegl\u0105darek, serwer\u00f3w proxy, jak i pami\u0119ci podr\u0119cznej serwera.<\/p>\n\n<h2>Interakcja z CDN i pami\u0119ci\u0105 podr\u0119czn\u0105 przegl\u0105darki<\/h2>\n\n<p>\u0141\u0105cz\u0119 po stronie serwera <strong>Buforowanie<\/strong> z CDN, kt\u00f3ry dostarcza statyczne zasoby z d\u0142ugim TTL. W przypadku HTML ustawiam kr\u00f3tsze TTL na serwerze i okre\u015blam zr\u00f3\u017cnicowane regu\u0142y w CDN. W przegl\u0105darce kontroluj\u0119 Expires, ETags i Cache-Control, aby powracaj\u0105cy u\u017cytkownicy nie musieli du\u017co prze\u0142adowywa\u0107. Wersjonowane nazwy plik\u00f3w (odciski palc\u00f3w zasob\u00f3w) pozwalaj\u0105 na d\u0142ugi czas dzia\u0142ania bez b\u0142\u0119d\u00f3w <strong>Zawarto\u015b\u0107<\/strong>. Wprowadzam zmiany poprzez czyszczenie pami\u0119ci podr\u0119cznej lub nowe wersje zasob\u00f3w.<\/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\/2025\/09\/servercaching_nginx_apache_3847.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Planowanie pojemno\u015bci i dostrajanie pami\u0119ci masowej<\/h2>\n\n<p>Pami\u0119\u0107 podr\u0119czna dzia\u0142a dobrze tylko wtedy, gdy rozmiar, uk\u0142ad pami\u0119ci i zasady wymiany s\u0105 prawid\u0142owe. Szacuj\u0119 wymagan\u0105 pojemno\u015b\u0107 na podstawie liczby unikalnych obiekt\u00f3w na TTL i ich \u015bredniego rozmiaru oraz planuj\u0119 bufor dla szczyt\u00f3w. W Nginx okre\u015blam keys_zone (indeks w RAM), inactive (proces bez trafie\u0144) i max_size (na dysku). W Apache sprawdzam \u015bcie\u017ck\u0119 cache, maksymalny rozmiar i u\u017cywam narz\u0119dzi do czyszczenia.<\/p>\n<ul>\n  <li><strong>Dedykowana pami\u0119\u0107:<\/strong> Oddzielny wolumin\/partycja dla pami\u0119ci podr\u0119cznej w celu zmniejszenia konkurencji IO.<\/li>\n  <li><strong>Parametry systemu plik\u00f3w:<\/strong> Opcje takie jak noatime zmniejszaj\u0105 narzut IO; du\u017ce i-w\u0119z\u0142y\/bloki mog\u0105 przechowywa\u0107 wiele ma\u0142ych plik\u00f3w bardziej efektywnie.<\/li>\n  <li><strong>Eksmisja:<\/strong> Zaakceptuj strategie LRU i wybierz TTL tak, aby pozosta\u0142y gor\u0105ce obiekty.<\/li>\n  <li><strong>Podgrzewanie wst\u0119pne:<\/strong> Pingowanie wa\u017cnych \u015bcie\u017cek po wdro\u017ceniu, aby u\u017cytkownicy mogli natychmiast z nich korzysta\u0107.<\/li>\n  <li><strong>htcacheclean\/Manager:<\/strong> Czy\u015b\u0107 regularnie pod Apache; nie blokuj proces\u00f3w mened\u017cera pami\u0119ci podr\u0119cznej pod Nginx.<\/li>\n<\/ul>\n<p>Pami\u0119\u0107 i konfiguracja rosn\u0105 wraz z rozwojem witryny - dzi\u0119ki czemu wska\u017anik trafie\u0144 pozostaje stabilny.<\/p>\n\n<h2>Obs\u0142uga, uniewa\u017cnianie i konserwacja<\/h2>\n\n<p>Planuj\u0119 jasno <strong>Procesy<\/strong> do sprawdzania poprawno\u015bci pami\u0119ci podr\u0119cznej po wdro\u017ceniach, aktualizacjach zawarto\u015bci i zmianach strukturalnych. Zautomatyzowane haki specjalnie czyszcz\u0105 dotkni\u0119te \u015bcie\u017cki zamiast usuwa\u0107 ca\u0142\u0105 pami\u0119\u0107 podr\u0119czn\u0105. Kontrole stanu i alarmy zg\u0142aszaj\u0105 nietypowe wska\u017aniki braku lub kody b\u0142\u0119d\u00f3w, dzi\u0119ki czemu mog\u0119 natychmiast reagowa\u0107. Dokumentuj\u0119 zasady, obowi\u0105zki i typowe wyj\u0105tki, aby zapewni\u0107 sp\u00f3jne wyniki. Dzi\u0119ki temu system jest przewidywalny, szybki i \u0142atwy w utrzymaniu dla zespo\u0142\u00f3w.<\/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\/2025\/09\/server-caching-setup-7492.png\" alt=\"\" width=\"1536\" height=\"1024\" \/>\n<\/figure>\n\n\n<h2>Metody uniewa\u017cniania i wzorce oczyszczania<\/h2>\n\n<p>Opcje usuwania r\u00f3\u017cni\u0105 si\u0119 w zale\u017cno\u015bci od stosu. Preferuj\u0119 strategie, kt\u00f3re nie wymagaj\u0105 pe\u0142nego usuwania i minimalizuj\u0105 ryzyko.<\/p>\n<ul>\n  <li><strong>Uniewa\u017cnienie na podstawie czasu:<\/strong> Kr\u00f3tki s-maxage\/TTL dla HTML plus rewalidacja; zasoby pozostaj\u0105 d\u0142ugie, poniewa\u017c s\u0105 wersjonowane.<\/li>\n  <li><strong>Wersjonowanie kluczy:<\/strong> Zintegruj token wersji (np. identyfikator kompilacji) z kluczem pami\u0119ci podr\u0119cznej; wersja zmienia si\u0119 podczas wdra\u017cania, stare obiekty wygasaj\u0105 bez czyszczenia.<\/li>\n  <li><strong>Ukierunkowane czystki:<\/strong> Tam, gdzie to mo\u017cliwe, usu\u0144 selektywnie przez API\/PURGE; w przeciwnym razie usu\u0144 pliki pami\u0119ci podr\u0119cznej selektywnie i rozgrzej.<\/li>\n  <li><strong>Tagowanie na poziomie aplikacji:<\/strong> Przypisuj strony do grup\/tag\u00f3w i specjalnie uniewa\u017cniaj grup\u0119 podczas aktualizacji tre\u015bci.<\/li>\n  <li><strong>Zakaz zbli\u017cania si\u0119 do kraw\u0119dzi:<\/strong> Blokowanie oparte na wzorcach, je\u015bli dedykowane odwrotne proxy jest pod\u0142\u0105czone do sieci upstream.<\/li>\n<\/ul>\n<p>Automatyzuj\u0119 kroki w procesie CI\/CD i prowadz\u0119 dzienniki, aby \u015bledzi\u0107, kiedy i dlaczego zawarto\u015b\u0107 zosta\u0142a uniewa\u017cniona.<\/p>\n\n<h2>Testy i zapewnienie jako\u015bci<\/h2>\n\n<p>Przed uruchomieniem regu\u0142 upewniam si\u0119, \u017ce funkcjonalno\u015b\u0107 i bezpiecze\u0144stwo s\u0105 prawid\u0142owe. Pracuj\u0119 ze \u015brodowiskiem przej\u015bciowym i przeprowadzam jasno okre\u015blone testy.<\/p>\n<ul>\n  <li><strong>Sprawdzanie nag\u0142\u00f3wka:<\/strong> Czy Cache-Control, Vary, ETag\/Last-Modified s\u0105 poprawne dla ka\u017cdego typu zasobu?<\/li>\n  <li><strong>Analiza trafie\u0144\/pude\u0142:<\/strong> Czy zmiany zwi\u0119kszaj\u0105 wsp\u00f3\u0142czynnik trafie\u0144? Czy wra\u017cliwe strony trafiaj\u0105 do pami\u0119ci podr\u0119cznej przez pomy\u0142k\u0119?<\/li>\n  <li><strong>Przypadki obci\u0105\u017ce\u0144 i b\u0142\u0119d\u00f3w:<\/strong> Zachowanie przy szczytowym obci\u0105\u017ceniu, upstream timeout i 5xx - czy stale-if-error dzia\u0142a?<\/li>\n  <li><strong>Warianty urz\u0105dzenia\/j\u0119zyka:<\/strong> Czy warianty s\u0105 prawid\u0142owo rozdzielane i zwracane?<\/li>\n  <li><strong>\u015acie\u017cki istotne z punktu widzenia SEO:<\/strong> Obs\u0142uga 301\/302, kanoniczne, paginacja i strony wyszukiwania nie s\u0105 nieprawid\u0142owo buforowane.<\/li>\n<\/ul>\n<p>U\u017cywam kontroli syntetycznych i rzeczywistych metryk u\u017cytkownik\u00f3w, aby upewni\u0107 si\u0119, \u017ce optymalizacje nie prowadz\u0105 do regresji.<\/p>\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>U\u017cywam po stronie serwera <strong>Buforowanie<\/strong>aby skr\u00f3ci\u0107 czas odpowiedzi, zmniejszy\u0107 obci\u0105\u017cenie serwera i z \u0142atwo\u015bci\u0105 obs\u0142ugiwa\u0107 obci\u0105\u017cenia szczytowe. Nginx imponuje szybkim FastCGI i pami\u0119ci\u0105 podr\u0119czn\u0105 proxy, Apache zmienn\u0105 logik\u0105 modu\u0142\u00f3w i precyzyjn\u0105 kontrol\u0105. Kluczowe znaczenie maj\u0105 precyzyjne regu\u0142y TTL, omijania i usuwania, kt\u00f3re chroni\u0105 spersonalizowane tre\u015bci. Monitorowanie ze znaczeniem <strong>Nag\u0142\u00f3wki<\/strong> pokazuje mi, czy regu\u0142y dzia\u0142aj\u0105 i gdzie musz\u0119 wprowadzi\u0107 poprawki. Dzi\u0119ki czystej konfiguracji, jasnym wyj\u0105tkom i planowanemu uniewa\u017cnianiu, ka\u017cda witryna pozostaje szybka, niezawodna i skalowalna.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119 wszystkiego, co musisz wiedzie\u0107 o buforowaniu po stronie serwera z Nginx i Apache, w tym instrukcje krok po kroku i profesjonalne wskaz\u00f3wki dotycz\u0105ce lepszej wydajno\u015bci witryny.<\/p>","protected":false},"author":1,"featured_media":12665,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_crdt_document":"","inline_featured_image":false,"footnotes":""},"categories":[676],"tags":[],"class_list":["post-12672","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-server_vm"],"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":"2912","_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":null,"_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":"serverseitiges caching","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":"12665","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/12672","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=12672"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/12672\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/12665"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=12672"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=12672"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=12672"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}