{"id":21403,"date":"2026-09-14T18:18:52","date_gmt":"2026-09-14T16:18:52","guid":{"rendered":"https:\/\/webhosting.de\/apache-mod-http2-optimal-konfigurieren-http2-performance-hosting\/"},"modified":"2026-09-14T18:18:52","modified_gmt":"2026-09-14T16:18:52","slug":"optymalna-konfiguracja-modulu-apache-http-2-wydajnosc-http-2-w-hostingu","status":"publish","type":"post","link":"https:\/\/webhosting.de\/pl\/apache-mod-http2-optimal-konfigurieren-http2-performance-hosting\/","title":{"rendered":"Optymalna konfiguracja modu\u0142u Apache mod_http2 w celu uzyskania maksymalnej wydajno\u015bci HTTP\/2"},"content":{"rendered":"<p>Konfiguruj\u0119 serwer Apache <strong>mod_http2<\/strong> tak, aby wydajno\u015b\u0107 HTTP\/2 by\u0142a od razu odczuwalna: prawid\u0142owe negocjowanie protoko\u0142u, odpowiednie w\u0105tki MPM i poprawne ustawienia TLS. Dzi\u0119ki jasnym wytycznym dotycz\u0105cym strumieni, rozmiar\u00f3w okien i Keep-Alive uzyskuj\u0119 stabiln\u0105 <strong>Czasy \u0142adowania<\/strong> ze stron o du\u017cej liczbie odwiedzin.<\/p>\n\n<h2>Punkty centralne<\/h2>\n\n<ul>\n  <li><strong>Wydarzenie MPM<\/strong> wdro\u017cy\u0107 i odpowiednio skonfigurowa\u0107 Keep-Alive<\/li>\n  <li><strong>Protoko\u0142y<\/strong> h2 http\/1.1 z opcj\u0105 ProtocolsHonorOrder w\u0142\u0105czon\u0105<\/li>\n  <li><strong>H2WindowSize<\/strong> umiarkowanie zwi\u0119ksza\u0107 i ogranicza\u0107 strumienie<\/li>\n  <li><strong>Pracownik<\/strong> sterowa\u0107 za pomoc\u0105 H2MinWorkers\/H2MaxWorkers<\/li>\n  <li><strong>TLS\/ALPN<\/strong> optymalizacja i udoskonalenie rejestrowania<\/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\/09\/apache-serverraum-optimal-4826.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>W\u0142\u0105czanie mod_http2: podstawy i wymagania wst\u0119pne<\/h2>\n\n<p>Zaczynam od aktywacji <strong>mod_http2<\/strong> oraz negocjacji protoko\u0142u. Modu\u0142 jest \u0142adowany za pomoc\u0105 funkcji LoadModule, a nast\u0119pnie ustawiam opcj\u0119 \u201eProtocols h2 http\/1.1\u201d, aby protok\u00f3\u0142 HTTP\/2 mia\u0142 pierwsze\u0144stwo, a HTTP\/1.1 by\u0142 nadal oferowany. W przypadku wdro\u017cenia produkcyjnego sprawdzam poprawno\u015b\u0107 <strong>TLS<\/strong>, aktualne zestawy szyfr\u00f3w oraz wy\u0142\u0105czone starsze wersje, takie jak SSLv2\/SSLv3. Bez prawid\u0142owo skonfigurowanego TLS i ALPN nowoczesne przegl\u0105darki nie wykorzystuj\u0105 w pe\u0142ni mo\u017cliwo\u015bci protoko\u0142u. W przypadku du\u017cej liczby jednoczesnych po\u0142\u0105cze\u0144 planuj\u0119 z wyprzedzeniem zastosowanie MPM, poniewa\u017c prefork znacznie spowalnia HTTP\/2.<\/p>\n<pre><code>LoadModule http2_module modules\/mod_http2.so\nProtocols h2 http\/1.1\n<\/code><\/pre>\n\n<h2>Prawid\u0142owe w\u0142\u0105czenie protoko\u0142u HTTP\/2 w VirtualHostach<\/h2>\n\n<p>W\u0142\u0105czam protok\u00f3\u0142 HTTP\/2 tylko w <strong>vHost<\/strong> na porcie 443 i ustalam sta\u0142\u0105 kolejno\u015b\u0107. W ten spos\u00f3b wymuszam, aby Apache najpierw oferowa\u0142 protok\u00f3\u0142 HTTP\/2, a dopiero w razie potrzeby przechodzi\u0142 na HTTP\/1.1. Szybki test za pomoc\u0105 Curl potwierdza to zachowanie komunikatem \u201eHTTP\/2 200\u201c. Dyrektywa <strong>Protoko\u0142y, Odznaczenia, Ordery<\/strong> Ustawiam opcj\u0119 na \u201eOn\u201d, aby kolejno\u015b\u0107 protoko\u0142\u00f3w by\u0142a wi\u0105\u017c\u0105ca. W ten spos\u00f3b uzyskuj\u0119 przejrzyst\u0105 i przewidywaln\u0105 kolejno\u015b\u0107 dostarczania danych dla ka\u017cdego hosta.<\/p>\n<pre><code>Protocols h2 http\/1.1\n  ProtocolsHonorOrder On\n  SSLEngine on\n  # certyfikaty, szyfry, OCSP itp.\n<\/code><\/pre>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/09\/apache_http2_conf_4952.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Precyzyjne dostrojenie opcji MPM i Keep-Alive<\/h2>\n\n<p>Aby zapewni\u0107 wysok\u0105 r\u00f3wnoczesno\u015b\u0107, stawiam na <strong>mpm_event<\/strong>, poniewa\u017c w\u0105tki i zdarzenia efektywnie obs\u0142uguj\u0105 du\u017c\u0105 liczb\u0119 po\u0142\u0105cze\u0144. Warto\u015bci parametr\u00f3w StartServers, ThreadsPerChild i MaxRequestWorkers dobieram w oparciu o dost\u0119pn\u0105 pami\u0119\u0107 RAM, aby unikn\u0105\u0107 ryzyka wy\u0142adowania pami\u0119ci. W przypadku HTTP\/2 zwi\u0119kszam warto\u015b\u0107 KeepAliveTimeout, aby trwa\u0142e po\u0142\u0105czenia mia\u0142y wystarczaj\u0105co du\u017co czasu na obs\u0142ug\u0119 kilku \u017c\u0105da\u0144. Jednocze\u015bnie ograniczam warto\u015b\u0107 MaxKeepAliveRequests, aby cyklicznie zwalnia\u0107 zasoby. Osoby, kt\u00f3re chc\u0105 pog\u0142\u0119bi\u0107 swoj\u0105 wiedz\u0119 na temat r\u00f3\u017cnic mi\u0119dzy modu\u0142ami MPM, znajd\u0105 szczeg\u00f3\u0142owe informacje w mojej notatce dotycz\u0105cej <a href=\"https:\/\/webhosting.de\/pl\/apache-mpm-event-a-mpm-worker-dostrajanie-i-optymalizacja-serwera-www\/\">event vs worker MPM<\/a>, kt\u00f3ry w praktyczny spos\u00f3b u\u0142atwia wyb\u00f3r.<\/p>\n\n<h2>Strumienie, multipleksowanie i kontrola przep\u0142ywu<\/h2>\n\n<p>Steruj\u0119 r\u00f3wnoleg\u0142ymi <strong>Strumienie<\/strong> za pomoc\u0105 H2MaxSessionStreams i zapobiegam sytuacji, w kt\u00f3rej klient zajmuje zbyt wiele zasob\u00f3w. Warto\u015bci z przedzia\u0142u od 100 do 200 cz\u0119sto sprawdzaj\u0105 si\u0119 dobrze, w zale\u017cno\u015bci od liczby zasob\u00f3w i zachowania serwera. Aby zwi\u0119kszy\u0107 przepustowo\u015b\u0107, dostosowuj\u0119 parametr H2WindowSize i umiarkowanie powi\u0119kszam okno strumienia, cz\u0119sto do 256 KB. W ten spos\u00f3b ograniczam liczb\u0119 aktualizacji okna bez nadmiernego obci\u0105\u017cania pami\u0119ci. Je\u015bli chcesz zrozumie\u0107, jak to dzia\u0142a, zapoznaj si\u0119 z moim artyku\u0142em na temat <a href=\"https:\/\/webhosting.de\/pl\/http2-multipleksowanie-vs-http11-wydajnosc-tlo-optymalizacja\/\">Multipleksowanie HTTP\/2<\/a>, kt\u00f3ry w przyst\u0119pny spos\u00f3b wyja\u015bnia priorytety i przeszkody.<\/p>\n\n<h2>W\u0105tki robocze, limity czasu i push<\/h2>\n\n<p>Dimensionuj\u0119 <strong>H2MinWorkers<\/strong> oraz H2MaxWorkers dostosowane do sprz\u0119tu i MPM, aby szczyty obci\u0105\u017cenia nie powodowa\u0142y szczyt\u00f3w op\u00f3\u017anie\u0144. Dodatkowo ustawiam H2Timeout i H2KeepAliveTimeout tak, aby zawieszone sesje nie zajmowa\u0142y zasob\u00f3w niepotrzebnie d\u0142ugo. Dyrektyw\u0119 H2Direct pomijam w witrynach publicznych, poniewa\u017c h2c z Prior Knowledge nie odgrywa tam praktycznie \u017cadnej roli. Je\u015bli chodzi o funkcj\u0119 Push, zachowuj\u0119 ostro\u017cno\u015b\u0107 i w\u0142\u0105czam H2Push dopiero po przeprowadzeniu dok\u0142adnych pomiar\u00f3w. W wielu konfiguracjach niezawodniejsze wyniki zapewniaj\u0105 prawid\u0142owe buforowanie, krytyczne pliki CSS oraz skrypty asynchroniczne. <strong>Przyspieszenie<\/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\/09\/apache-mod-http2-optimierung-1258.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Prawid\u0142owe skonfigurowanie TLS, ALPN i zestaw\u00f3w szyfr\u00f3w<\/h2>\n\n<p>W\u0142\u0105czam TLS tylko w vHoste HTTPS i usuwam stare <strong>Protoko\u0142y<\/strong> Konsekwentnie. Aby zapewni\u0107 sprawny przebieg negocjacji, korzystam z ALPN, dzi\u0119ki czemu klient przechodzi bezpo\u015brednio na HTTP\/2 bez dodatkowych rund. Kr\u00f3tki \u0142a\u0144cuch certyfikat\u00f3w, OCSP-Stapling i wznowienie sesji zmniejszaj\u0105 obci\u0105\u017cenie podczas uzgadniania po\u0142\u0105czenia. W ten spos\u00f3b oszcz\u0119dzam milisekundy, co ma zauwa\u017calny wp\u0142yw na czas \u0142adowania i przepustowo\u015b\u0107. Wi\u0119cej szczeg\u00f3\u0142\u00f3w przedstawiam w moim przewodniku po <a href=\"https:\/\/webhosting.de\/pl\/tls-alpn-negocjacja-http2-aktywacja-protokolu-optymalizacja-strumieni\/\">ALPN i HTTP\/2<\/a> razem, aby wyb\u00f3r szyfr\u00f3w i opcji by\u0142 precyzyjny.<\/p>\n\n<h2>Rejestrowanie, testy i diagnostyka b\u0142\u0119d\u00f3w<\/h2>\n\n<p>Podbijam <strong>LogLevel<\/strong> W przypadku protoko\u0142u HTTP\/2 najpierw przechodz\u0119 do sekcji \u201einfo\u201d, aby obserwowa\u0107 nawi\u0105zywanie po\u0142\u0105czenia, strumienie i kontrol\u0119 przep\u0142ywu. W ten spos\u00f3b wcze\u015bnie wykrywam w\u0105skie gard\u0142a i mog\u0119 stopniowo dostosowywa\u0107 warto\u015bci. Za pomoc\u0105 curl sprawdzam nag\u0142\u00f3wki, protok\u00f3\u0142 i odpowiedzi serwera bezpo\u015brednio z konsoli. W testach obci\u0105\u017ceniowych mierz\u0119 czasy odpowiedzi, przepustowo\u015b\u0107 i wska\u017aniki b\u0142\u0119d\u00f3w oddzielnie dla tras statycznych i dynamicznych. Ka\u017cd\u0105 zmian\u0119 popieram danymi pomiarowymi, aby optymalizacje przynosi\u0142y niezawodne efekty.<\/p>\n<pre><code>LogLevel http2:info\n\n\nKr\u00f3tki test #:\n# curl -v --http2 -I https:\/\/example.com\/\n<\/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\/09\/apache_mod_http2_optimal_7801.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Przyk\u0142ad: Zwi\u0119z\u0142a konfiguracja HTTP\/2<\/h2>\n\n<p>Poka\u017c\u0119 jedn\u0105 <strong>Konfiguracja<\/strong>, kt\u00f3ra sprawdzi\u0142a si\u0119 w wielu projektach i zapewnia dobry punkt wyj\u015bcia. Event-MPM obs\u0142uguje wiele jednoczesnych po\u0142\u0105cze\u0144 bez przeci\u0105\u017cania proces\u00f3w. Dyrektywy HTTP\/2 ograniczaj\u0105 strumienie, umiarkowanie zwi\u0119kszaj\u0105 okno i zapewniaj\u0105 wystarczaj\u0105c\u0105 liczb\u0119 proces\u00f3w roboczych. Keep-Alive pozostaje ustawione na wysok\u0105 warto\u015b\u0107, ale MaxKeepAliveRequests zapewnia cykliczne zwalnianie po\u0142\u0105cze\u0144. Precyzyjne dostrojenie zale\u017cy od pami\u0119ci RAM, procesora, stosu aplikacji i profilu ruchu, dlatego po ka\u017cdej zmianie ponownie przeprowadzam pomiary.<\/p>\n<pre><code>Zdarzenie # MPM\n\n  StartServers 2\n  MinSpareThreads 25\n  MaxSpareThreads 75\n  ThreadsPerChild 25\n  MaxRequestWorkers    150\n  MaxConnectionsPerChild 1000\n\n\nJ\u0105dro # HTTP\/2\nProtocols h2 http\/1.1\nProtocolsHonorOrder On\n\nOptymalizacja mod_http2 w #\nH2MaxSessionStreams   150\nH2WindowSize 262144\nH2MinWorkers 10\nH2MaxWorkers 75\nH2KeepAliveTimeout    30\nH2Timeout 60\n# Wy\u0142\u0105cz H2Push   # pozostaw opcjonalnie\n\n# TLS (przyk\u0142ad)\nSSLProtocol all -SSLv2 -SSLv3\n# Wybierz zestaw szyfr\u00f3w SSL (SSLCipherSuite) nowoczesny i zgodny z przegl\u0105darkami\n# W\u0142\u0105cz OCSP Stapling \/ wznowienie sesji\n<\/code><\/pre>\n\n<h2>Tabela warto\u015bci orientacyjnych dotycz\u0105cych optymalizacji mod_http2<\/h2>\n\n<p>Korzystam z tego <strong>Warto\u015bci standardowe<\/strong> jako punkt wyj\u015bcia i dostosowuj\u0119 je na podstawie pomiar\u00f3w ruchu, sprz\u0119tu i aplikacji. Tabela zawiera typowe warto\u015bci pocz\u0105tkowe oraz zalecane przedzia\u0142y. Zbyt du\u017ce okna lub liczba strumieni obci\u0105\u017caj\u0105 pami\u0119\u0107 RAM, a zbyt ma\u0142e ograniczaj\u0105 przepustowo\u015b\u0107. Sztuka polega na zharmonizowaniu tych parametr\u00f3w z ustawieniem MaxRequestWorkers i wydajno\u015bci\u0105 backendu. Testuj\u0119 ka\u017cdy poziom osobno, aby wyra\u017anie dostrzec zwi\u0105zek przyczynowo-skutkowy.<\/p>\n<table>\n  <thead>\n    <tr>\n      <th>Wytyczna\/Ustawienie<\/th>\n      <th>warto\u015b\u0107 pocz\u0105tkowa<\/th>\n      <th>Zakres regulacji<\/th>\n      <th>Wskaz\u00f3wka<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td><strong>H2MaxSessionStreams<\/strong><\/td>\n      <td>100<\/td>\n      <td>120\u2013200<\/td>\n      <td>Nie wi\u0119cej ni\u017c pozwala na to bud\u017cet przeznaczony na pracownik\u00f3w<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>H2WindowSize<\/strong><\/td>\n      <td>65535 B<\/td>\n      <td>256 KB \u2013 1 MB<\/td>\n      <td>Wi\u0119kszy = mniej aktualizacji systemu Windows, ale wi\u0119cej pami\u0119ci RAM<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>H2MinWorkers<\/strong><\/td>\n      <td>10<\/td>\n      <td>10\u201325<\/td>\n      <td>Ma\u0142e systemy zapewniaj\u0105 obci\u0105\u017cenie podstawowe<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>H2MaxWorkers<\/strong><\/td>\n      <td>50<\/td>\n      <td>50\u201375+<\/td>\n      <td>Amortyzowanie szczyt\u00f3w obci\u0105\u017cenia, monitorowanie pami\u0119ci RAM<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>KeepAliveTimeout<\/strong><\/td>\n      <td>15 s<\/td>\n      <td>20\u201330 s<\/td>\n      <td>Protok\u00f3\u0142 HTTP\/2 czerpie korzy\u015bci z d\u0142u\u017cszych po\u0142\u0105cze\u0144<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>MaxKeepAliveRequests<\/strong><\/td>\n      <td>100<\/td>\n      <td>100\u2013500<\/td>\n      <td>Regularne udost\u0119pnianie zasob\u00f3w<\/td>\n    <\/tr>\n    <tr>\n      <td><strong>Wydarzenie MPM: MaxRequestWorkers<\/strong><\/td>\n      <td>150<\/td>\n      <td>150\u2013300<\/td>\n      <td>Oblicza\u0107 z uwzgl\u0119dnieniem bud\u017cetu pami\u0119ci RAM<\/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\/09\/apache_http2_tuning_4321.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Realistyczne testy obci\u0105\u017ceniowe i strategia pomiarowa<\/h2>\n\n<p>Sprawdzam <strong>Czasy reakcji<\/strong> oddzielnie dla HTML, zasob\u00f3w statycznych i dynamicznych tras API. Nast\u0119pnie oceniam przepustowo\u015b\u0107 i wska\u017aniki b\u0142\u0119d\u00f3w przy rosn\u0105cej liczbie jednoczesnych po\u0142\u0105cze\u0144, aby zidentyfikowa\u0107 punkty krytyczne. Potem stopniowo dostosowuj\u0119 H2WindowSize, strumienie i Keep-Alive oraz por\u00f3wnuj\u0119 wyniki test\u00f3w A\/B. Ponadto monitoruj\u0119 obci\u0105\u017cenie procesora, pami\u0119\u0107 RAM, sie\u0107 oraz czasy uzgadniania TLS, aby \u017cadne przesuni\u0119cie w\u0105skiego gard\u0142a nie pozosta\u0142o niezauwa\u017cone. W ten spos\u00f3b uzyskuj\u0119 konfiguracj\u0119 dostosowan\u0105 do aplikacji i zapewniaj\u0105c\u0105 rezerwy na okresy szczytowego obci\u0105\u017cenia.<\/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\/09\/apache-server-konfiguration-1944.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Uwzgl\u0119dnienie kwestii infrastruktury i konfiguracji hostingu<\/h2>\n\n<p>Stawiam na aktualne <strong>Apacz<\/strong>-aktualne wersje oprogramowania, zadbany stos TLS oraz wydajny sprz\u0119t, dzi\u0119ki czemu optymalizacje przynosz\u0105 efekty. W przypadku du\u017cych sklep\u00f3w i portali opartych na WordPressie warto wybra\u0107 dostawc\u0119, kt\u00f3ry standardowo oferuje modu\u0142 Event-MPM, protok\u00f3\u0142 HTTP\/2 oraz sprawn\u0105 obs\u0142ug\u0119 certyfikat\u00f3w. W testach por\u00f3wnawczych webhoster.de okaza\u0142 si\u0119 niezawodnym dostawc\u0105 takich konfiguracji. \u0141\u0105cz\u0119 tam nowoczesne konfiguracje z fachowym wsparciem technicznym. Ta podstawa pozwala mi szybciej testowa\u0107 warto\u015bci orientacyjne i p\u0142ynnie wdra\u017ca\u0107 je do dzia\u0142ania.<\/p>\n\n<h2>HTTP\/2 za modu\u0142ami r\u00f3wnowa\u017cenia obci\u0105\u017cenia i jako serwer proxy odwrotny<\/h2>\n\n<p>Sprawdzam, czy przed serwerem Apache znajduje si\u0119 plik <strong>Load balancer<\/strong> lub zako\u0144czone przez CDN. Najwa\u017cniejsze jest, aby protok\u00f3\u0142 ALPN zosta\u0142 poprawnie wynegocjowany, a HTTP\/2 pozostawa\u0142 aktywny a\u017c do kraw\u0119dzi sieci. Po zako\u0144czeniu po\u0142\u0105czenia TLS serwer Apache dzia\u0142aj\u0105cy jako backend nadal widzi tylko HTTP\/1.1 \u2013 nie stanowi to problemu, o ile klient jest obs\u0142ugiwany przez h2 a\u017c do kraw\u0119dzi sieci. Je\u015bli sam uruchamiam serwer Apache jako <strong>Odwrotne proxy<\/strong> w przypadku serwer\u00f3w upstream (np. serwer\u00f3w aplikacji), \u015bwiadomie decyduj\u0119, czy chc\u0119 r\u00f3wnie\u017c korzysta\u0107 z protoko\u0142u HTTP\/2 <em>do<\/em> Korzystam z backendu. W przypadku wielu backend\u00f3w protok\u00f3\u0142 HTTP\/1.1 jest wystarczaj\u0105co stabilny i \u0142atwy do zmierzenia; w przypadku us\u0142ug o du\u017cym op\u00f3\u017anieniu lub odleg\u0142ych protok\u00f3\u0142 HTTP\/2 mo\u017ce zmniejszy\u0107 op\u00f3\u017anienie w kierunku upstream dzi\u0119ki multipleksowaniu. Wa\u017cne jest, aby odpowiednio zbilansowa\u0107 bud\u017cety wsp\u00f3\u0142bie\u017cno\u015bci mi\u0119dzy frontendem, warstw\u0105 proxy a backendem, w przeciwnym razie w\u0105skie gard\u0142o przeniesie si\u0119 po prostu o jeden poziom dalej.<\/p>\n\n<h2>PHP-FPM, serwer aplikacji i limity wsp\u00f3\u0142bie\u017cno\u015bci<\/h2>\n\n<p>G\u0142osuj\u0119 <strong>MaxRequestWorkers<\/strong> w serwerze Apache zale\u017cy od liczby proces\u00f3w\/w\u0105tk\u00f3w w warstwie aplikacji (np. pm.max_children w przypadku PHP-FPM, liczba worker\u00f3w w przypadku Node\/Java). HTTP\/2 mo\u017ce otwiera\u0107 wiele r\u00f3wnoczesnych strumieni na jedno po\u0142\u0105czenie. Je\u015bli serwer WWW przyjmuje znacznie wi\u0119cej r\u00f3wnoczesnych \u017c\u0105da\u0144, ni\u017c backend jest w stanie przetworzy\u0107 r\u00f3wnolegle, wyd\u0142u\u017caj\u0105 si\u0119 kolejki i wzrastaj\u0105 op\u00f3\u017anienia. Dlatego dostosowuj\u0119 warto\u015bci H2MaxSessionStreams, MaxRequestWorkers oraz liczb\u0119 pracownik\u00f3w backendowych w taki spos\u00f3b, aby korzy\u015bci wynikaj\u0105ce z multipleksowania nie zosta\u0142y zniwelowane przez blokowanie backendowe. W przypadku stron dynamicznych ustalam sztywny limit g\u00f3rny, natomiast zasoby statyczne agresywnie obs\u0142uguj\u0119 z pami\u0119ci podr\u0119cznej.<\/p>\n\n<h2>Ekonomia nag\u0142\u00f3wk\u00f3w, HPACK i strategia zarz\u0105dzania zasobami<\/h2>\n\n<p>HTTP\/2 kompresuje nag\u0142\u00f3wki za pomoc\u0105 <strong>HPACK<\/strong>. Niemniej jednak du\u017ce nag\u0142\u00f3wki plik\u00f3w cookie, rozbudowane ci\u0105gi znak\u00f3w User-Agent lub wiele zb\u0119dnych niestandardowych nag\u0142\u00f3wk\u00f3w obci\u0105\u017caj\u0105 procesor i pami\u0119\u0107. Oczyszczam pliki cookie, ograniczam liczb\u0119 domen i subdomen z nag\u0142\u00f3wkiem Set-Cookie oraz grupuj\u0119 tylko to, co jest naprawd\u0119 potrzebne. Po stronie dostarczania ustawiam poprawne nag\u0142\u00f3wki pami\u0119ci podr\u0119cznej, ETags lub Last-Modified oraz jasn\u0105 wersjonowanie zasob\u00f3w. W protokole HTTP\/2 podchodz\u0119 z dystansem do shardingu domen i sztucznego grupowania: dzi\u0119ki multipleksowaniu wiele ma\u0142ych plik\u00f3w nie stanowi ju\u017c problemu \u2013 o ile backend nad\u0105\u017ca. Zwracam uwag\u0119 na zachowanie r\u00f3wnowagi: zbyt du\u017ca liczba \u017c\u0105da\u0144 na stron\u0119 zwi\u0119ksza obci\u0105\u017cenie zwi\u0105zane z planowaniem; zbyt du\u017ce pakiety zmniejszaj\u0105 liczb\u0119 trafie\u0144 w pami\u0119ci podr\u0119cznej i blokuj\u0105 renderowanie.<\/p>\n\n<h2>Kompresja, rozmiary i formaty odpowiedzi<\/h2>\n\n<p>W przypadku zasob\u00f3w tekstowych korzystam z wydajnych <strong>Kompresja<\/strong> (gzip lub brotli) i zwracam uwag\u0119 na rozs\u0105dne minimalne rozmiary, aby nie kompresowa\u0107 ka\u017cdego najmniejszej pliku. W protokole HTTP\/2 skompresowane, niewielkie zasoby zachowuj\u0105 wysok\u0105 wydajno\u015b\u0107, poniewa\u017c s\u0105 przesy\u0142ane r\u00f3wnolegle. Jednocze\u015bnie minimalizuj\u0119 zbyt du\u017ce odpowiedzi HTML, poniewa\u017c maj\u0105 one decyduj\u0105cy wp\u0142yw na czas pierwszego bajtu. Obrazy dostarczam w odpowiednich formatach i rozmiarach; unikam niepotrzebnego ponownego kodowania lub konwersji po stronie serwera bezpo\u015brednio w \u015bcie\u017cce \u017c\u0105dania, aby wyg\u0142adzi\u0107 skoki obci\u0105\u017cenia procesora.<\/p>\n\n<h2>Eksploatacja, limity i planowanie zasob\u00f3w<\/h2>\n\n<p>Planuj\u0119 wystarczaj\u0105co <strong>Deskryptory plik\u00f3w<\/strong> oraz limity proces\u00f3w, aby du\u017ca liczba jednoczesnych po\u0142\u0105cze\u0144 nie napotyka\u0142a ogranicze\u0144 ulimit. Modu\u0142 Event-MPM skutecznie utrzymuje otwarte po\u0142\u0105czenia, jednak ka\u017cde z nich zajmuje pewn\u0105 ilo\u015b\u0107 pami\u0119ci. Suma warto\u015bci MaxRequestWorkers, okna Keep-Alive i H2MaxSessionStreams ustalam w taki spos\u00f3b, aby ca\u0142y system nie przechodzi\u0142 w tryb swapowania podczas szczyt\u00f3w obci\u0105\u017cenia. W przypadku wdro\u017ce\u0144 typu rolling deploy stawiam na <strong>wdzi\u0119czny<\/strong> Od\u015bwie\u017canie; parametr `MaxConnectionsPerChild` zapewnia aktualno\u015b\u0107 proces\u00f3w i zapobiega stopniowemu powstawaniu wyciek\u00f3w. Regularnie mierz\u0119 zajmowan\u0105 pami\u0119\u0107 sterty przez procesy robocze i odpowiednio dostosowuj\u0119 czas ich dzia\u0142ania.<\/p>\n\n<h2>Przyk\u0142ady usterek z praktyki i ukierunkowana diagnostyka<\/h2>\n\n<p>Znam typowe <strong>B\u0142\u0119dy HTTP\/2<\/strong>: Du\u017ca liczba ramek GOAWAY wskazuje na przerwy w po\u0142\u0105czeniu lub twarde limity. Cz\u0119ste wyst\u0119powanie ramek RST_STREAM mo\u017ce wskazywa\u0107 na przekroczenie limitu czasu, przerwanie \u017c\u0105dania przez klienta lub b\u0142\u0119dy po stronie dostawcy. Je\u015bli podczas test\u00f3w obci\u0105\u017ceniowych coraz cz\u0119\u015bciej pojawiaj\u0105 si\u0119 kody 4xx\/5xx, najpierw sprawdzam serwery backendowe i bazy danych, zanim zaczn\u0119 modyfikowa\u0107 ustawienia okna lub strumieni. W celu diagnozy tymczasowo podnosz\u0119 poziom logowania http2 do debug, izoluj\u0119 \u015bcie\u017cki o nietypowym zachowaniu i dokonuj\u0119 pomiar\u00f3w za pomoc\u0105 narz\u0119dzi obs\u0142uguj\u0105cych protok\u00f3\u0142 h2. Wa\u017cne: Zmieniam zawsze tylko <em>a<\/em> \u015aruba regulacyjna na ka\u017cdy przebieg testowy, aby przyczyna i skutek pozosta\u0142y przejrzyste.<\/p>\n\n<h2>Wczesne wskaz\u00f3wki, motywowanie i ustalanie priorytet\u00f3w w codziennej pracy<\/h2>\n\n<p>Polegam na <strong>Wczesne wskaz\u00f3wki<\/strong> (103) jako prost\u0105 metod\u0119 wst\u0119pnego \u0142adowania, zanim rozwa\u017c\u0119 zastosowanie funkcji HTTP\/2 Push. Funkcja Early Hints zapewnia przegl\u0105darce przewag\u0119 w \u0142adowaniu kluczowych zasob\u00f3w bez konieczno\u015bci ich trwa\u0142ego duplikowania. Funkcja \u201ePush\u201d pozostaje ukierunkowana i oparta na pomiarach, na przyk\u0142ad w przypadku bardzo ma\u0142ych, niezmiennych fragment\u00f3w kodu CSS lub czcionek, o ile korzy\u015bci s\u0105 potwierdzone wska\u017anikami. Je\u015bli chodzi o ustalanie priorytet\u00f3w, polegam przede wszystkim na prawid\u0142owej kolejno\u015bci element\u00f3w HTML, wskaz\u00f3wkach dotycz\u0105cych wst\u0119pnego \u0142adowania oraz jasnej strategii \u015bcie\u017cki krytycznej aplikacji \u2013 takie podej\u015bcie doskonale wsp\u00f3\u0142gra z nowoczesnymi przegl\u0105darkami.<\/p>\n\n<h2>Limity czasu, ponowne pr\u00f3by i komfort u\u017cytkowania<\/h2>\n\n<p>Kalibruj\u0119 <strong>Limity czasu<\/strong> tak, aby legalni, ale wolni klienci nie byli zbyt wcze\u015bnie od\u0142\u0105czani, podczas gdy zawieszone strumienie s\u0105 szybko usuwane. Parametry H2Timeout i H2KeepAliveTimeout uzupe\u0142niam odpowiednimi limitami czasu na serwerze proxy i backendzie, aby unikn\u0105\u0107 sprzecznych kryteri\u00f3w przerywania po\u0142\u0105cze\u0144. Podczas optymalizacji zwracam uwag\u0119, aby ponowne pr\u00f3by (po stronie klienta lub serwera proxy) nie powodowa\u0142y efektu kaskadowego \u2013 w przeciwnym razie przyniesie to wi\u0119cej obci\u0105\u017cenia ni\u017c korzy\u015bci. Celem s\u0105 mierzalne, dobre czasy \u0142adowania, a nie maksymalna surowa wsp\u00f3\u0142bie\u017cno\u015b\u0107 za wszelk\u0105 cen\u0119.<\/p>\n\n<h2>Bezpiecze\u0144stwo, dopracowanie protoko\u0142u TLS i stabilno\u015b\u0107<\/h2>\n\n<p>Uwa\u017cam, \u017ce stos TLS <strong>szczup\u0142y<\/strong>: kr\u00f3tkie \u0142a\u0144cuchy, OCSP z mo\u017cliwo\u015bci\u0105 nak\u0142adania, wznowienie sesji oraz nowoczesne algorytmy szyfruj\u0105ce z ECDHE. Renegocjacja jest wykluczona, a rozmiary nag\u0142\u00f3wk\u00f3w celowo ograniczam (np. w przypadku plik\u00f3w cookie). Przek\u0142ada si\u0119 to na stabilno\u015b\u0107 i przewidywalno\u015b\u0107, poniewa\u017c minimalizuj\u0119 obci\u0105\u017cenie zwi\u0105zane z uzgodnieniem po\u0142\u0105czenia. Aby spe\u0142ni\u0107 wymogi zgodno\u015bci, planuj\u0119 czas \u017cycia bilet\u00f3w, pami\u0119\u0107 podr\u0119czn\u0105 sesji i zestawy szyfr\u00f3w w taki spos\u00f3b, aby zapewni\u0107 rozs\u0105dn\u0105 r\u00f3wnowag\u0119 mi\u0119dzy bezpiecze\u0144stwem a wydajno\u015bci\u0105. Zmiany popieram danymi pomiarowymi uzyskanymi u docelowych klient\u00f3w, a nie tylko w warunkach laboratoryjnych.<\/p>\n\n<h2>Monitorowanie, wska\u017aniki i ci\u0105g\u0142a optymalizacja<\/h2>\n\n<p>Obserwuj\u0119, co si\u0119 dzieje w zak\u0142adzie <strong>Udzia\u0142 h2<\/strong>, rozk\u0142ady op\u00f3\u017anie\u0144 (p50\/p95\/p99), wska\u017aniki b\u0142\u0119d\u00f3w, otwarte po\u0142\u0105czenia oraz zu\u017cycie pami\u0119ci RAM na proces. Mod_status i zewn\u0119trzne wska\u017aniki pokazuj\u0105, czy okna Keep-Alive i strumienie s\u0105 odpowiednio skalowane. Je\u015bli op\u00f3\u017anienia p95 ulegaj\u0105 odchyleniom, najpierw sprawdzam backend i \u015bcie\u017cki sieciowe, a dopiero potem okna\/strumienie. Dodatkowo sprawdzam czasy uzgadniania TLS; je\u015bli rosn\u0105, przyczyna cz\u0119sto le\u017cy przed serwerem Apache (stan certyfikatu, entropia, kryptografia sprz\u0119towa). Dzi\u0119ki temu cyklowi informacji zwrotnej utrzymuj\u0119 konfiguracj\u0119 zbli\u017con\u0105 do rzeczywistych warunk\u00f3w i dostosowuj\u0119 j\u0105 do wzorc\u00f3w ruchu oraz nowych wersji oprogramowania.<\/p>\n\n<h2>Kwestie zwi\u0105zane z aktualizacj\u0105 i kompatybilno\u015bci\u0105<\/h2>\n\n<p>Planuj\u0119 <strong>Regularne aktualizacje<\/strong> Apache i mod_http2, poniewa\u017c popraw\u0119 stabilno\u015bci, kontroli przep\u0142ywu i obs\u0142ugi b\u0142\u0119d\u00f3w mo\u017cna bezpo\u015brednio zmierzy\u0107. Przed aktualizacj\u0105 przeprowadzam testy pod obci\u0105\u017ceniem przy u\u017cyciu reprezentatywnych danych i por\u00f3wnuj\u0119 krzywe z danymi produkcyjnymi. W przypadku zr\u00f3\u017cnicowanej populacji klient\u00f3w (starsze przegl\u0105darki, boty, urz\u0105dzenia) celowo pozostawiam HTTP\/1.1 jako opcj\u0119 rezerwow\u0105, sprawdzam jednak, czy boty nie nawi\u0105zuj\u0105 nadmiernej liczby po\u0142\u0105cze\u0144, anga\u017cuj\u0105c w ten spos\u00f3b procesy robocze. W takich przypadkach ustalam limity lub segreguj\u0119 ruch, aby <em>prawdziwi u\u017cytkownicy<\/em> Maj\u0105 pierwsze\u0144stwo.<\/p>\n\n<h2>\u015acie\u017cka skalowania i modele operacyjne<\/h2>\n\n<p>Definiuj\u0119 <strong>\u015bcie\u017cka skalowania<\/strong>: w pionie (wi\u0119cej pami\u0119ci RAM\/procesora, wi\u0119ksze pule worker\u00f3w) lub w poziomie (wi\u0119cej frontend\u00f3w za load balancerem). HTTP\/2 dobrze skaluje si\u0119 w poziomie, o ile nie jest wymagana afynicja sesji. W przypadku komponent\u00f3w stanowych (np. sesji po stronie serwera) planuj\u0119, ile r\u00f3wnoleg\u0142ych strumieni na w\u0119ze\u0142 jest sensowne i czy naprawd\u0119 potrzebuj\u0119 sesji przypisanych (sticky sessions). W ten spos\u00f3b unikam sytuacji, w kt\u00f3rej jeden w\u0119ze\u0142 jest nadmiernie obci\u0105\u017cony zbyt du\u017c\u0105 liczb\u0105 d\u0142ugotrwa\u0142ych strumieni, podczas gdy inne pozostaj\u0105 niewykorzystane.<\/p>\n\n<h2>Moje kr\u00f3tkie podsumowanie<\/h2>\n\n<p>Aktywuj\u0119 <strong>HTTP\/2<\/strong> W vHost nale\u017cy wybra\u0107 Event-MPM, zwi\u0119kszy\u0107 warto\u015b\u0107 Keep-Alive i precyzyjnie skonfigurowa\u0107 protoko\u0142y. Nast\u0119pnie dostosowuj\u0119 strumienie, rozmiary okien i liczb\u0119 proces\u00f3w roboczych tak, aby pami\u0119\u0107 RAM i procesor dzia\u0142a\u0142y w r\u00f3wnowadze. TLS z ALPN, kr\u00f3tkimi \u0142a\u0144cuchami i wznowieniem po\u0142\u0105cze\u0144 pozwala zaoszcz\u0119dzi\u0107 cenne milisekundy podczas nawi\u0105zywania po\u0142\u0105czenia. Rejestrowanie danych w http2:info oraz systematyczne testy obci\u0105\u017ceniowe pozwalaj\u0105 w spos\u00f3b przejrzysty udokumentowa\u0107 ka\u017cd\u0105 zmian\u0119. W ten spos\u00f3b wydajno\u015b\u0107 ro\u015bnie krok po kroku, a u\u017cytkownicy mog\u0105 cieszy\u0107 si\u0119 szybkim dzia\u0142aniem stron bez \u017cadnych zak\u0142\u00f3ce\u0144.<\/p>","protected":false},"excerpt":{"rendered":"<p>Dowiedz si\u0119, jak optymalnie skonfigurowa\u0107 modu\u0142 Apache mod_http2, aby zmaksymalizowa\u0107 wydajno\u015b\u0107 protoko\u0142u HTTP\/2 i, dzi\u0119ki odpowiedniemu dostrojeniu serwera Apache, efektywnie obs\u0142ugiwa\u0107 wi\u0119ksz\u0105 liczb\u0119 jednoczesnych u\u017cytkownik\u00f3w.<\/p>","protected":false},"author":1,"featured_media":21396,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[834],"tags":[],"class_list":["post-21403","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":"83","_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":"HTTP2 Performance","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":"21396","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21403","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=21403"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/posts\/21403\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media\/21396"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/media?parent=21403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/categories?post=21403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/pl\/wp-json\/wp\/v2\/tags?post=21403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}