{"id":19272,"date":"2026-05-12T18:43:17","date_gmt":"2026-05-12T16:43:17","guid":{"rendered":"https:\/\/webhosting.de\/http-compression-thresholds-konfiguration-webhosting-cachetuning\/"},"modified":"2026-05-12T18:43:17","modified_gmt":"2026-05-12T16:43:17","slug":"konfiguracja-progow-kompresji-http-webhosting-cache-tuning","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/http-compression-thresholds-konfiguration-webhosting-cachetuning\/","title":{"rendered":"Progi kompresji HTTP: optymalne konfiguracje dla hostingu internetowego"},"content":{"rendered":"<p>Progi kompresji HTTP okre\u015blaj\u0105 rozmiar, przy kt\u00f3rym serwer kompresuje zawarto\u015b\u0107, a tym samym bezpo\u015brednio kontroluj\u0105 TTFB, obci\u0105\u017cenie procesora i przepustowo\u015b\u0107. W tym przewodniku poka\u017c\u0119 konkretne progi, poziomy i ustawienia nag\u0142\u00f3wk\u00f3w dla szybkiego dostarczania, a tak\u017ce wyra\u017any podzia\u0142 na kompresj\u0119 dynamiczn\u0105 i statyczn\u0105. <strong>Kompresja<\/strong>.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<p>Najpierw podsumuj\u0119 najwa\u017cniejsze dostosowania, aby\u015b m\u00f3g\u0142 zacz\u0105\u0107 w ukierunkowany spos\u00f3b i unikn\u0105\u0107 marnowania niepotrzebnych cykli procesora. Polegam na jasnych progach, odpowiednich poziomach i czystych nag\u0142\u00f3wkach, aby przegl\u0105darki, serwery proxy i sieci CDN dzia\u0142a\u0142y poprawnie. Rozr\u00f3\u017cniam dynamiczne odpowiedzi od zasob\u00f3w kompilacji i \u015bci\u015ble kontroluj\u0119 kompresj\u0119 na skok. Minimalizuj\u0119 TTFB przy umiarkowanych poziomach kompresji runtime i uzyskuj\u0119 maksymaln\u0105 szybko\u015b\u0107 z plik\u00f3w wst\u0119pnie skompresowanych. Regularnie sprawdzam wska\u017aniki i dostosowuj\u0119 limity do rzeczywistego obci\u0105\u017cenia, miksu plik\u00f3w i op\u00f3\u017anie\u0144, dzi\u0119ki czemu konfiguracja jest zauwa\u017calnie bardziej wydajna. <strong>szybciej<\/strong> wola.<\/p>\n\n<ul>\n  <li><strong>Pr\u00f3g<\/strong> 512-1024 B, standardowo 1024 B<\/li>\n  <li><strong>Pa\u0142eczka do chleba<\/strong> 3-4 dynamiczne, 9-11 statyczne<\/li>\n  <li><strong>Gzip<\/strong> 5-6 jako rozwi\u0105zanie awaryjne<\/li>\n  <li><strong>MIME<\/strong> Tylko zasoby tekstowe<\/li>\n  <li><strong>R\u00f3\u017cne<\/strong> i ETag na kodowanie<\/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\/05\/serverraum-kompression-8342.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Czym s\u0105 progi kompresji HTTP?<\/h2>\n\n<p>Pr\u00f3g okre\u015bla rozmiar, powy\u017cej kt\u00f3rego odpowied\u017a jest kompresowana i zapobiega sztucznemu zawy\u017caniu niewielkich plik\u00f3w przez nag\u0142\u00f3wki. <strong>Pr\u00f3g rentowno\u015bci<\/strong>-Rozwa\u017cania. W przypadku bardzo ma\u0142ych odpowiedzi kodowanie tre\u015bci mo\u017ce zwi\u0119kszy\u0107 \u0142adunek i jednocze\u015bnie kosztowa\u0107 procesor. Dlatego zwykle ustawiam dolny limit na 1024 bajty lub 512 bajt\u00f3w dla interfejs\u00f3w API o wysokiej cz\u0119stotliwo\u015bci z wieloma ma\u0142ymi odpowiedziami. Mniejsze progi zwi\u0119kszaj\u0105 wsp\u00f3\u0142czynnik kompresji, ale zwi\u0119kszaj\u0105 TTFB i procesor, gdy zawarto\u015b\u0107 dynamiczna jest bardzo zmienna. Wi\u0119ksze progi oszcz\u0119dzaj\u0105 czas obliczeniowy, ale ryzykuj\u0105 zmarnowanie potencja\u0142u w przypadku \u015bredniej wielko\u015bci plik\u00f3w HTML, CSS lub JSON, kt\u00f3re s\u0105 dobrej jako\u015bci. <strong>Redukcja<\/strong> Zysk.<\/p>\n\n<h2>Brotli vs. Gzip: wyb\u00f3r i poziomy<\/h2>\n\n<p>Brotli cz\u0119sto osi\u0105ga o 15-21 procent lepsze wyniki ni\u017c Gzip dla zasob\u00f3w tekstowych, ale kosztuje wi\u0119cej procesora na \u017c\u0105danie, co bior\u0119 pod uwag\u0119 w przypadku dynamicznych odpowiedzi i u\u017cywam umiarkowanych poziom\u00f3w. <strong>poduszka<\/strong>. Do kompresji runtime u\u017cywam Brotli poziom 3-4, dla wst\u0119pnie spakowanych zasob\u00f3w poziom 9-11. Dla starszych klient\u00f3w lub mocno zmieniaj\u0105cej si\u0119 zawarto\u015bci u\u017cywam Gzip poziom 5-6. HTTP\/2 i HTTP\/3 korzystaj\u0105 z dobrej kompresji, o ile bufory serwera i punkty sp\u0142ukiwania s\u0105 ustawione poprawnie i nie dochodzi do przeci\u0105gni\u0119\u0107 strumienia. Je\u015bli chcesz dokona\u0107 g\u0142\u0119bszego por\u00f3wnania, mo\u017cesz znale\u017a\u0107 wi\u0119cej informacji w moim artykule <a href=\"https:\/\/webhosting.de\/pl\/porownanie-gzip-vs-brotli-hosting-optimus\/\">Por\u00f3wnanie Gzip vs. Brotli<\/a> dodatkowe praktyczne warto\u015bci i wzgl\u0119dy, kt\u00f3re decyduj\u0105 o wyborze w codziennym hostingu <strong>u\u0142atwienie<\/strong>.<\/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\/05\/webhost-konf-2837.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Ustawianie prog\u00f3w: Bariery ochronne i pr\u00f3g rentowno\u015bci<\/h2>\n\n<p>Zaczynam od 1024 bajt\u00f3w jako podstawowego progu, poniewa\u017c narzut nag\u0142\u00f3wka jest wtedy wyra\u017anie rekompensowany, a u\u017cycie procesora pozostaje rozs\u0105dne, szczeg\u00f3lnie w przypadku HTML i JSON, kt\u00f3re znacznie si\u0119 r\u00f3\u017cni\u0105. <strong>kondensowa\u0107<\/strong> opu\u015bci\u0107. Przy sieciach o bardzo ma\u0142ych op\u00f3\u017anieniach i wielu minimalnych odpowiedziach API, 512 bajt\u00f3w mo\u017ce by\u0107 u\u017cyteczne. Kompresja rzadko jest op\u0142acalna poni\u017cej 512 bajt\u00f3w, poniewa\u017c koszty administracyjne cz\u0119sto przekraczaj\u0105 redukcj\u0119 obci\u0105\u017cenia. W przypadku intensywnie wykorzystywanych maszyn, tymczasowo zwi\u0119kszam pr\u00f3g, a\u017c zbiorniki procesora zn\u00f3w b\u0119d\u0105 mia\u0142y bufory. Ta stopniowa regulacja utrzymuje TTFB na niskim poziomie i zachowuje <strong>Stabilno\u015b\u0107<\/strong> ca\u0142ego systemu.<\/p>\n\n<h2>Kompresuj w szczeg\u00f3lno\u015bci typy MIME<\/h2>\n\n<p>Kompresuj\u0119 tylko tekstowe pliki MIME, takie jak text\/html, text\/css, application\/javascript, application\/json i image\/svg+xml, poniewa\u017c mog\u0105 one by\u0107 u\u017cywane ze wzgl\u0119du na nadmiarowo\u015b\u0107. <strong>Wygrane<\/strong> drag. Pozostawiam zawarto\u015b\u0107 binarn\u0105, tak\u0105 jak image\/*, application\/pdf lub font\/woff2 nietkni\u0119t\u0105, poniewa\u017c efekt jest niewielki lub ujemny. W przypadku czcionek u\u017cywam bezpo\u015brednio WOFF2, poniewa\u017c ju\u017c koduje wydajnie i dalsza kompresja jest ma\u0142o przydatna. Utrzymuj\u0119 wyra\u017ane listy dozwolonych plik\u00f3w i unikam symboli wieloznacznych, aby \u017cadne pliki binarne przypadkowo nie trafi\u0142y do kodera. W ten spos\u00f3b utrzymuj\u0119 \u0142a\u0144cuch kompresji w czysto\u015bci i zapobiegam <strong>Korupcja<\/strong> z powodu b\u0142\u0119dnej klasyfikacji.<\/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\/05\/http-compression-thresholds-optimal-7234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Statyczne vs. dynamiczne: czysta separacja<\/h2>\n\n<p>Pakuj\u0119 zasoby statyczne w procesie kompilacji lub na kraw\u0119dzi CDN z wyprzedzeniem jako .br i .gz i pozwalam serwerowi bezpo\u015brednio korzysta\u0107 z tych wariant\u00f3w. <strong>dostarcza\u0107<\/strong>. W przypadku dynamicznych odpowiedzi ustawiam umiarkowane poziomy i utrzymuj\u0119 bufory na tyle ma\u0142e, \u017ce pierwszy blok bajt\u00f3w przep\u0142ywa szybko. Wa\u017cne jest, aby kompresowa\u0107 tylko jeden przeskok w \u0142a\u0144cuchach proxy, aby unikn\u0105\u0107 podw\u00f3jnej kompresji. Mog\u0119 wy\u0142\u0105czy\u0107 kompresj\u0119 w Origin, je\u015bli CDN ju\u017c to zrobi\u0142 i poprawnie oddzieli\u0142 j\u0105 za pomoc\u0105 Vary. Taka separacja oszcz\u0119dza procesor i zapewnia sta\u0142y <strong>Czasy reakcji<\/strong> nawet pod obci\u0105\u017ceniem.<\/p>\n\n<h2>Zarz\u0105dzanie nag\u0142\u00f3wkami i buforowanie<\/h2>\n\n<p>Zawsze wysy\u0142am Vary: Accept-Encoding, aby pami\u0119ci podr\u0119czne poprawnie rozr\u00f3\u017cnia\u0142y warianty i nie by\u0142o \u017cadnych pomini\u0119\u0107, kt\u00f3re spowalniaj\u0105 u\u017cytkownik\u00f3w lub fa\u0142szuj\u0105 zasoby; ten nag\u0142\u00f3wek to <strong>decyduj\u0105cy<\/strong>. Dla plik\u00f3w statycznych ustawiam kodowanie zawarto\u015bci (br\/gzip) plus d\u0142ugo\u015b\u0107 zawarto\u015bci, podczas gdy strumienie dynamiczne cz\u0119sto dzia\u0142aj\u0105 z kodowaniem transferu: chunked. ETagi musz\u0105 by\u0107 specyficzne dla kodowania, w przeciwnym razie pami\u0119\u0107 podr\u0119czna dostarczy nieprawid\u0142owe wersje. Ustawiam r\u00f3wnie\u017c d\u0142ugie TTL pami\u0119ci podr\u0119cznej dla wst\u0119pnie skompresowanych zasob\u00f3w i zabezpieczam je za pomoc\u0105 kontroli pami\u0119ci podr\u0119cznej: publiczne, niezmienne, je\u015bli skr\u00f3ty plik\u00f3w znajduj\u0105 si\u0119 w nazwie. Podaj\u0119 tutaj kompaktowy punkt wyj\u015bcia: <a href=\"https:\/\/webhosting.de\/pl\/konfiguracja-kompresji-http-optymalizacja-wydajnosci\/\">Konfiguracja kompresji HTTP<\/a>, najwa\u017cniejsze elementy sk\u0142adowe w <strong>Sekwencja<\/strong> pokazy.<\/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\/05\/http_komprimierung_tech_1234.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>HTTP\/2 i HTTP\/3: sp\u0142ukiwanie i buforowanie<\/h2>\n\n<p>W przypadku HTTP\/2 i HTTP\/3 zwracam uwag\u0119 na wczesne punkty sp\u0142ukiwania, aby krytyczny HTML i CSS nie op\u00f3\u017ania\u0142y rozpocz\u0119cia renderowania. <strong>op\u00f3\u017anienie<\/strong>. Zbyt du\u017ce bufory mog\u0105 spowolni\u0107 multipleksowanie, poniewa\u017c jeden strumie\u0144 dominuje w harmonogramie, a inna zawarto\u015b\u0107 czeka. Pierwsze bloki kompresji powinny by\u0107 ma\u0142e i wysy\u0142ane szybko, a nast\u0119pnie zwi\u0119kszane w przypadku d\u0142ugich plik\u00f3w. Brotli pokazuje dobre pr\u0119dko\u015bci z umiarkowanym narzutem, o ile poziom 3-4 jest u\u017cywany do dynamicznych odpowiedzi. Pozwala to utrzyma\u0107 wysok\u0105 interaktywno\u015b\u0107, a du\u017ce pakiety s\u0105 wydajne. <strong>kurczy\u0107 si\u0119<\/strong>.<\/p>\n\n<h2>Praktyka: Apache, Nginx, Caddy<\/h2>\n\n<p>Zaczynam od umiarkowanych poziom\u00f3w i progu 1024 bajt\u00f3w, a nast\u0119pnie systematycznie sprawdzam TTFB i CPU zamiast \u015blepo ustawia\u0107 maksymalne pr\u0119dko\u015bci. <strong>egzekwowa\u0107<\/strong>. W Apache aktywuj\u0119 mod_deflate lub mod_brotli i definiuj\u0119 tylko po\u017c\u0105dane typy MIME. W Nginx ustawiam gzip_min_length 1024 i Brotli na on, \u0142\u0105cz\u0105c to z brotli_static dla wst\u0119pnie skompresowanych plik\u00f3w. Caddy oferuje proste prze\u0142\u0105czniki z kodowaniem gzip zstd br; osobno obs\u0142uguj\u0119 \u015bcie\u017cki dynamiczne z niskimi poziomami. Z do\u015bwiadczenia warto przyjrze\u0107 si\u0119 <a href=\"https:\/\/webhosting.de\/pl\/poziom-kompresji-obciazenie-procesora-optymalizacja-strumienia-danych-gzip-brotli\/\">Obci\u0105\u017cenie procesora i poziom kompresji<\/a>, poniewa\u017c po\u0142\u0105czenie proporcji odpowiedzi dynamicznych i liczby rdzeni cz\u0119sto przekracza limit. <strong>zestawy<\/strong>.<\/p>\n\n<p><strong>Apacz<\/strong> Przyk\u0142ad (mod_deflate\/mod_brotli):<\/p>\n<pre><code>AddOutputFilterByType DEFLATE text\/html text\/css application\/javascript application\/json image\/svg+xml\n SetOutputFilter DEFLATE\n DeflateCompressionLevel 6\n DeflateBufferSize 64k\n\n\n\n AddOutputFilterByType BROTLI_COMPRESS text\/html text\/css application\/javascript application\/json image\/svg+xml\n BrotliCompressionQuality 4\n BrotliWindowSize 22<\/code><\/pre>\n\n<p><strong>Nginx<\/strong> Przyk\u0142ad:<\/p>\n<pre><code>gzip w\u0142\u0105czony;\ngzip_min_length 1024;\ngzip_types text\/plain text\/css application\/json application\/javascript image\/svg+xml;\ngzip_comp_level 5;\n\nbrotli on;\nbrotli_comp_level 4;\nbrotli_static on;\nbrotli_types text\/plain text\/css application\/json application\/javascript image\/svg+xml;<\/code><\/pre>\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\/05\/http-kompressionsschwellen-5432.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Monitorowanie i rozwi\u0105zywanie problem\u00f3w<\/h2>\n\n<p>Mierz\u0119 TTFB, wykorzystanie procesora na pracownika i rozmiar transferu na typ, dzi\u0119ki czemu mog\u0119 zobaczy\u0107, gdzie kompresja pomaga, a gdzie jest potrzebna. <strong>szkody<\/strong>. Je\u015bli TTFB wzrasta po aktywacji, obni\u017cam poziom lub podnosz\u0119 pr\u00f3g. Je\u015bli wyst\u0119puj\u0105 jakie\u015b dziwne efekty, najpierw sprawdzam podw\u00f3jn\u0105 kompresj\u0119, brakuj\u0105ce nag\u0142\u00f3wki Vary lub nieprawid\u0142owo rozpoznane typy MIME. Przygl\u0105dam si\u0119 r\u00f3wnie\u017c politykom CDN i WAF, poniewa\u017c drugi przeskok z kompresj\u0105 przesuwa obci\u0105\u017cenie i cz\u0119sto pogarsza czas do pierwszego bajtu. Narz\u0119dzia takie jak WebPageTest i Browser-DevTools s\u0105 wystarczaj\u0105ce do wst\u0119pnego sprawdzenia. <strong>Audyt<\/strong> ca\u0142kowicie.<\/p>\n\n<h2>Punkty pomiarowe i zalecane warto\u015bci<\/h2>\n\n<p>Trzymam si\u0119 kilku jasnych parametr\u00f3w, dzi\u0119ki czemu konfiguracja pozostaje \u0142atwa w zarz\u0105dzaniu i nadal osi\u0105ga wysoki poziom jako\u015bci. <strong>Efekt<\/strong> pokazuje. Poni\u017csza tabela podsumowuje przydatne progi, poziomy i instrukcje buforowania. Obejmuje ona typowe stosy internetowe z HTML, CSS, JS, JSON, SVG i czcionkami. Dostosuj pr\u00f3g w zale\u017cno\u015bci od obci\u0105\u017cenia, rezerwuaru procesora i proporcji dynamicznych odpowiedzi. Zacznij konserwatywnie, zmierz i iteracyjnie przesuwaj suwaki w ma\u0142ych krokach. <strong>Kroki<\/strong>.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Zasoby<\/th>\n      <th>Pr\u00f3g (bajty)<\/th>\n      <th>Dynamiczny (poziom)<\/th>\n      <th>Statyczny (poziom)<\/th>\n      <th>Wskaz\u00f3wka dotycz\u0105ca pami\u0119ci podr\u0119cznej<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>HTML<\/td>\n      <td>1024<\/td>\n      <td>Br 3\u20134 \/ Gz 5\u20136<\/td>\n      <td>Br. 9-11 (wst\u0119pnie skompresowane)<\/td>\n      <td>D\u0142ugi TTL dla nazw hash<\/td>\n    <\/tr>\n    <tr>\n      <td>CSS\/JS<\/td>\n      <td>1024<\/td>\n      <td>Rzadko dynamiczny<\/td>\n      <td>Br. 9-11 (wst\u0119pnie skompresowane)<\/td>\n      <td>niezmienny, warianty na hash<\/td>\n    <\/tr>\n    <tr>\n      <td>JSON (API)<\/td>\n      <td>512-1024<\/td>\n      <td>Br 3\u20134 \/ Gz 5\u20136<\/td>\n      <td>nie jest to powszechne<\/td>\n      <td>Zachowaj sp\u00f3jno\u015b\u0107 nag\u0142\u00f3wk\u00f3w<\/td>\n    <\/tr>\n    <tr>\n      <td>SVG<\/td>\n      <td>1024<\/td>\n      <td>Rzadko dynamiczny<\/td>\n      <td>Br 9\u201311<\/td>\n      <td>\u017b\u0105dania zakresu testowego<\/td>\n    <\/tr>\n    <tr>\n      <td>Czcionki (WOFF2)<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>Nie \u015bciska\u0107 dalej<\/td>\n    <\/tr>\n    <tr>\n      <td>Obrazy (PNG\/JPEG\/WEBP)<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>Oddzielna optymalizacja<\/td>\n    <\/tr>\n    <tr>\n      <td>PDF<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>brak<\/td>\n      <td>Unikaj kodowania<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h2>Zstd w kontek\u015bcie: kiedy ma sens, a kiedy nie<\/h2>\n\n<p>Oceniam Zstd niezale\u017cnie, poniewa\u017c ma doskona\u0142e <strong>Przepustowo\u015b\u0107<\/strong> z dobr\u0105 kompresj\u0105. W \u015brodowisku przegl\u0105darki obs\u0142uga jest jednak niejednorodna, dlatego zwykle nie wdra\u017cam Zstd jako g\u0142\u00f3wnego kodowania dla u\u017cytkownik\u00f3w ko\u0144cowych. Pomi\u0119dzy us\u0142ugami wewn\u0119trznymi lub na trasie szkieletowej CDN, Zstd mo\u017ce by\u0107 bardzo przydatny do utrzymania wydajno\u015bci ruchu Origin CDN. Na obrze\u017cach trzymam si\u0119 Brotli (dla tekstu) i Gzip jako rozwi\u0105zania awaryjnego, dop\u00f3ki szeroko obs\u0142ugiwana baza klient\u00f3w nie zapewni, \u017ce warianty s\u0105 negocjowane poprawnie. W Caddy pozostawiam opcjonalnie aktywne Zstd, ale nadaj\u0119 priorytet protoko\u0142owi <strong>Negocjacje<\/strong> Brotli przed Gzip, aby zr\u00f3wnowa\u017cy\u0107 kompatybilno\u015b\u0107 i wydajno\u015b\u0107.<\/p>\n\n<h2>\u017b\u0105dania zasi\u0119gu, pobieranie i wst\u0119pnie skompresowane pliki<\/h2>\n\n<p>Du\u017ce pliki do pobrania (np. PDF, CSV) sprawdzam osobno. W przypadku danych binarnych zazwyczaj wy\u0142\u0105czam kodowanie tre\u015bci i dostarczam to\u017csamo\u015b\u0107 (<strong>to\u017csamo\u015b\u0107<\/strong>), aby \u017c\u0105dania zasi\u0119gu dzia\u0142a\u0142y poprawnie, a wznowione pobieranie pozosta\u0142o stabilne. W przypadku statycznych plik\u00f3w tekstowych z wariantami .br\/.gz zapewniam, \u017ce serwer wybiera prawid\u0142owy wariant w zale\u017cno\u015bci od \u017c\u0105dania klienta oraz \u017ce d\u0142ugo\u015b\u0107 zawarto\u015bci, kodowanie zawarto\u015bci i ETag s\u0105 sp\u00f3jne. W przypadku cz\u0119\u015bciowych \u017c\u0105da\u0144 dla skompresowanych wariant\u00f3w, zakresy bajt\u00f3w dla opcji <strong>skompresowany<\/strong> length - je\u015bli stos nie obs\u0142uguje tego solidnie, dostarczam nieskompresowan\u0105 wersj\u0119 dla \u017c\u0105da\u0144 zakresu. \u0141agodzi to przypadki brzegowe i zapobiega nieprawid\u0142owym restartom.<\/p>\n\n<h2>Bezpiecze\u0144stwo: kompresja i wycieki danych<\/h2>\n\n<p>Bior\u0119 pod uwag\u0119 kana\u0142y boczne zwi\u0105zane z kompresj\u0105, takie jak <strong>BREACH<\/strong>. Je\u015bli odpowiedzi odzwierciedlaj\u0105 zawarto\u015b\u0107 zale\u017cn\u0105 od sekret\u00f3w (tokeny, identyfikatory sesji) w pobli\u017cu danych wej\u015bciowych, kt\u00f3re mog\u0105 by\u0107 kontrolowane przez atakuj\u0105cego, selektywnie wy\u0142\u0105czam kompresj\u0119 lub od\u0142\u0105czam sekrety (wype\u0142nianie, rozdzielanie na osobne nieskompresowane pola). W przypadku \u015bcie\u017cek logowania i p\u0142atno\u015bci sensowne jest wy\u0142\u0105czenie kompresji za pomoc\u0105 nag\u0142\u00f3wk\u00f3w lub regu\u0142. Pliki cookie z ustawionymi nag\u0142\u00f3wkami plik\u00f3w cookie nie s\u0105 krytyczne, wa\u017cne jest to, co jest w nich zawarte. <strong>Odpowied\u017a<\/strong>-payload. Dlatego mam gotowe filtry, kt\u00f3re s\u0105 ukierunkowane na \u015bcie\u017ck\u0119, MIME lub okre\u015blone szablony, aby \u0142atwo wymusi\u0107 heurystyk\u0119.<\/p>\n\n<h2>\u0141a\u0144cuchy CDN i proxy: jedna kompresja na przeskok<\/h2>\n\n<p>Wyra\u017anie definiuj\u0119 skok, przy kt\u00f3rym nast\u0119puje kompresja: Albo w <strong>Kraw\u0119d\u017a<\/strong> (CDN) lub w Origin, nie w obu. Je\u015bli CDN kompresuje, pomijam kodowanie tre\u015bci w Origin i wysy\u0142am Vary: Accept-Encoding, aby Edge tworzy\u0142 poprawne warianty. Je\u015bli Origin ma dostarcza\u0107 wst\u0119pnie skompresowane zasoby (.br\/.gz), konfiguruj\u0119 Edge, aby wysy\u0142a\u0142 te pliki do CDN. <em>Przezroczysty<\/em> i nie przekszta\u0142ca go ponownie. Je\u015bli chc\u0119 \u015bci\u015ble zapobiega\u0107 przekszta\u0142ceniom przez po\u015brednie serwery proxy (np. w celu zapewnienia zgodno\u015bci), ustawiam Cache-Control: no-transform - wtedy planuj\u0119 kompresj\u0119 specjalnie w \u017ar\u00f3dle. Dla cel\u00f3w debugowania, odnotowuj\u0119, kt\u00f3ry hop the <strong>Kompresja<\/strong> i utrzymywa\u0107 metryki oddzielnie dla ka\u017cdego przeskoku.<\/p>\n\n<h2>Streaming, SSE, gRPC i WebSockets<\/h2>\n\n<p>W przypadku zdarze\u0144 wysy\u0142anych przez serwer (SSE) i podobnych strumieni unikam wysokich poziom\u00f3w i <strong>du\u017cy<\/strong> bufor; w przeciwnym razie op\u00f3\u017anienie zauwa\u017calnie wzro\u015bnie. U\u017cywam ma\u0142ych blok\u00f3w, cz\u0119stego p\u0142ukania i bardziej wy\u0142\u0105czonej kompresji, je\u015bli priorytetem jest interaktywno\u015b\u0107. gRPC u\u017cywa w\u0142asnej kompresji wiadomo\u015bci i dzia\u0142a przez HTTP\/2 - tutaj unikam dodatkowego kodowania tre\u015bci HTTP, aby zapobiec duplikacji. To samo dotyczy WebSockets: per-message deflate mo\u017ce by\u0107 przydatny, ale w\u0142\u0105czam go tylko dla naprawd\u0119 ci\u0119\u017ckich tekstowo kana\u0142\u00f3w i monitoruj\u0119 <strong>CPU<\/strong>-dok\u0142adnie.<\/p>\n\n<h2>Serwer aplikacji: Ustawienia warstwy aplikacji<\/h2>\n\n<p>Wol\u0119 kontrolowa\u0107 progi w edge\/reverse proxy, ale gdy frameworki kompresuj\u0105, ustawiam sp\u00f3jne warto\u015bci, aby nic nie dzia\u0142a\u0142o przeciwko sobie.<\/p>\n\n<ul>\n  <li><strong>Node.js\/Express<\/strong>Ustawi\u0142em pr\u00f3g 1024 bajt\u00f3w i umiarkowane poziomy. Obs\u0142uga statyczna obs\u0142uguje bezpo\u015brednio wst\u0119pnie skompresowane zasoby statyczne, kompresuj\u0119 tylko trasy dynamiczne dla tekstowych MIME.<\/li>\n  <li><strong>Wejd\u017a na stron\u0119<\/strong>Wybieram jasn\u0105 list\u0119 dozwolonych MIME dla ka\u017cdej obs\u0142ugi i pomijam kompresj\u0119 poni\u017cej 1 KB. W przypadku d\u0142ugich strumieni, utrzymuj\u0119 niskie warto\u015bci write flush, aby nie przeci\u0105\u017ca\u0107 pierwszego paint'a. <strong>op\u00f3\u017anienie<\/strong>.<\/li>\n  <li><strong>Java\/Tomcat<\/strong>U\u017cywam compressionMinSize 1024 i jawnie utrzymuj\u0119 list\u0119 MIME; typy binarne s\u0105 pomijane.<\/li>\n<\/ul>\n\n<p><strong>Tomcat<\/strong> Przyk\u0142ad (server.xml Connector):<\/p>\n<pre><code>&lt;Connector port=\"8080\" protocol=\"HTTP\/1.1\"\n    compression=\"on\"\n    compressionMinSize=\"1024\"\n    noCompressionUserAgents=\"\"\n    compressableMimeType=\"text\/html,text\/css,application\/javascript,application\/json,image\/svg+xml\"\n    URIEncoding=\"UTF-8\" \/&gt;<\/code><\/pre>\n\n<p>Wa\u017cne: Je\u015bli serwer proxy (Nginx, Caddy) ju\u017c kompresuje, dezaktywuj\u0119 kompresj\u0119 warstwy aplikacji w celu <strong>Powielanie pracy<\/strong> i niech tylko jedna warstwa ponosi odpowiedzialno\u015b\u0107.<\/p>\n\n<h2>Adaptacyjne progi i kontrola obci\u0105\u017cenia<\/h2>\n\n<p>My\u015bl\u0119 w kategoriach polityki zamiast sztywnych warto\u015bci. Przy du\u017cym obci\u0105\u017ceniu procesora podnosz\u0119 <strong>Pr\u00f3g<\/strong> tymczasowo (np. z 1024 do 2048 bajt\u00f3w) lub obni\u017cy\u0107 poziom Brotli (np. z 4 do 2) dla dynamicznych odpowiedzi. Je\u015bli obci\u0105\u017cenie spadnie, ponownie zwi\u0119kszam warto\u015bci. Mo\u017cna to kontrolowa\u0107 za pomoc\u0105 flagi funkcji, zmiennych Env lub prostego prze\u0142adowania. Na w\u0119z\u0142ach z ma\u0142\u0105 ilo\u015bci\u0105 CPU rezerwuj\u0119 kompresj\u0119 dla najwa\u017cniejszych MIME (HTML\/JSON), podczas gdy CSS\/JS s\u0105 prawie wy\u0142\u0105cznie wst\u0119pnie skompresowane z pami\u0119ci masowej\/CDN. To <strong>Ustalanie priorytet\u00f3w<\/strong> utrzymuje TTFB na stabilnym poziomie, zamiast przechyla\u0107 si\u0119 w kierunku szczyt\u00f3w.<\/p>\n\n<h2>Podr\u0119cznik testowy: szybka weryfikacja<\/h2>\n\n<p>Sprawdzam efekt za pomoc\u0105 kilku powtarzalnych krok\u00f3w:<\/p>\n<ul>\n  <li><strong>Negocjacje<\/strong>: curl -I -H \u201eAccept-Encoding: br\u201c https:\/\/example.com - sprawd\u017a Content-Encoding, Vary i Content-Length.<\/li>\n  <li><strong>Fallback<\/strong>: curl -I -H \u201eAccept-Encoding: gzip\u201c - oczekiwany gzip? ETag r\u00f3\u017cni si\u0119 od Brotli?<\/li>\n  <li><strong>Bez kompresji<\/strong>curl -I -H \u201eAccept-Encoding: identity\u201c - Por\u00f3wnaj r\u00f3\u017cnic\u0119 wielko\u015bci i TTFB.<\/li>\n  <li><strong>Zasi\u0119g<\/strong>: curl -I -H \u201eRange: bytes=0-1023\u201c - czy serwer poprawnie akceptuje podzakresy i czy Content-Range pasuje?<\/li>\n  <li><strong>DevTools<\/strong>Por\u00f3wnanie rozmiaru \u201ew sieci\u201c z \u201erozmiarem zasobu\u201c w celu okre\u015blenia rzeczywistego <strong>Oszcz\u0119dno\u015bci<\/strong> zobaczy\u0107.<\/li>\n<\/ul>\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\/05\/serverraum-komprimierung-4821.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Ustaw pr\u00f3g na 1024 bajty jako szybki punkt wyj\u015bcia, sprawd\u017a TTFB i CPU i dostosuj ustawienia za pomoc\u0105 ma\u0142ych warto\u015bci. <strong>Korekty<\/strong> po. U\u017cywaj Brotli 3-4 dla dynamicznej zawarto\u015bci i 9-11 dla wst\u0119pnie skompresowanych zasob\u00f3w, zachowaj Gzip 5-6 jako rozwi\u0105zanie awaryjne. Kompresuj tylko tekstowe MIME i dostarczaj wst\u0119pnie skompresowane pliki bezpo\u015brednio, aby zachowa\u0107 lekko\u015b\u0107 i trwa\u0142o\u015b\u0107 zasob\u00f3w kompilacji. Zwr\u00f3\u0107 uwag\u0119 na Vary: Accept-Encoding, Content-Encoding i ETags specyficzne dla kodowania, aby pami\u0119ci podr\u0119czne dzia\u0142a\u0142y poprawnie. Dzi\u0119ki odpowiednio ustawionym progom kompresji HTTP mo\u017cna znacznie przyspieszy\u0107 dostarczanie bez obci\u0105\u017cania maszyny niepotrzebn\u0105 prac\u0105 obliczeniow\u0105. <strong>blok<\/strong>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Prawid\u0142owe ustawianie prog\u00f3w kompresji HTTP: dostrajanie prog\u00f3w gzip, optymalizacja brotli i hosting kompresji stron internetowych zapewniaj\u0105cy najwy\u017csz\u0105 wydajno\u015b\u0107.<\/p>","protected":false},"author":1,"featured_media":19265,"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-19272","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":"86","_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 Compression Thresholds","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":"19265","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19272","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=19272"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/19272\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/19265"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=19272"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=19272"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=19272"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}