{"id":13173,"date":"2026-05-20T10:32:25","date_gmt":"2026-05-20T10:32:25","guid":{"rendered":"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/"},"modified":"2026-05-20T10:32:35","modified_gmt":"2026-05-20T10:32:35","slug":"bledy-wordpress-core-web-vitals","status":"publish","type":"post","link":"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/","title":{"rendered":"Najcz\u0119stsze b\u0142\u0119dy w WordPressie, kt\u00f3re spowalniaj\u0105 stron\u0119 i psuj\u0105 wyniki Core Web Vitals \u2013 jak je naprawi\u0107"},"content":{"rendered":"\n\n<div class=\"kk-star-ratings kksr-auto kksr-align-left kksr-valign-top\"\n    data-payload='{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;13173&quot;,&quot;slug&quot;:&quot;default&quot;,&quot;valign&quot;:&quot;top&quot;,&quot;ignore&quot;:&quot;&quot;,&quot;reference&quot;:&quot;auto&quot;,&quot;class&quot;:&quot;&quot;,&quot;count&quot;:&quot;0&quot;,&quot;legendonly&quot;:&quot;&quot;,&quot;readonly&quot;:&quot;&quot;,&quot;score&quot;:&quot;0&quot;,&quot;starsonly&quot;:&quot;&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;Rate this post&quot;,&quot;legend&quot;:&quot;0\\\/5 - (0 votes)&quot;,&quot;size&quot;:&quot;24&quot;,&quot;title&quot;:&quot;Najcz\u0119stsze b\u0142\u0119dy w WordPressie, kt\u00f3re spowalniaj\u0105 stron\u0119 i psuj\u0105 wyniki Core Web Vitals \u2013 jak je naprawi\u0107&quot;,&quot;width&quot;:&quot;0&quot;,&quot;_legend&quot;:&quot;{score}\\\/{best} - ({count} {votes})&quot;,&quot;font_factor&quot;:&quot;1.25&quot;}'>\n            \n<div class=\"kksr-stars\">\n    \n<div class=\"kksr-stars-inactive\">\n            <div class=\"kksr-star\" data-star=\"1\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"2\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"3\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"4\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" data-star=\"5\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n    \n<div class=\"kksr-stars-active\" style=\"width: 0px;\">\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n            <div class=\"kksr-star\" style=\"padding-right: 5px\">\n            \n\n<div class=\"kksr-icon\" style=\"width: 24px; height: 24px;\"><\/div>\n        <\/div>\n    <\/div>\n<\/div>\n                \n\n<div class=\"kksr-legend\" style=\"font-size: 19.2px;\">\n            <span class=\"kksr-muted\">Rate this post<\/span>\n    <\/div>\n    <\/div>\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_81 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Z tego wpisu dowiesz si\u0119\u2026<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Prze\u0142\u0105cznik Spisu Tre\u015bci\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #000000;color:#000000\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #000000;color:#000000\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Dlaczego_Core_Web_Vitals_i_wydajnosc_WordPressa_sa_dzis_kluczowe\" >Dlaczego Core Web Vitals i wydajno\u015b\u0107 WordPressa s\u0105 dzi\u015b kluczowe<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Core_Web_Vitals_po_ludzku_LCP_CLS_INP\" >Core Web Vitals po ludzku: LCP, CLS, INP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Wolny_WordPress_a_SEO_konwersje_i_doswiadczenie_uzytkownika\" >Wolny WordPress a SEO, konwersje i do\u015bwiadczenie u\u017cytkownika<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Elastycznosc_WordPressa_kontra_%E2%80%9Espuchniete%E2%80%9D_strony\" >Elastyczno\u015b\u0107 WordPressa kontra \u201espuchni\u0119te\u201d strony<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Praktyczny_przyklad_sklep_WooCommerce_przed_i_po_optymalizacji\" >Praktyczny przyk\u0142ad: sklep WooCommerce przed i po optymalizacji<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Co_sprawdzic_na_start_szybki_test_PageSpeed_i_WebPageTest\" >Co sprawdzi\u0107 na start: szybki test PageSpeed i WebPageTest<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_prawidlowo_diagnozowac_problemy_wydajnosci_w_WordPressie\" >Jak prawid\u0142owo diagnozowa\u0107 problemy wydajno\u015bci w WordPressie<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_1_Testy_zewnetrzne_%E2%80%93_PageSpeed_Lighthouse_GTmetrix_WebPageTest\" >Krok 1: Testy zewn\u0119trzne \u2013 PageSpeed, Lighthouse, GTmetrix, WebPageTest<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_2_Chrome_DevTools_%E2%80%93_Performance_i_Network\" >Krok 2: Chrome DevTools \u2013 Performance i Network<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_3_Wtyczki_i_narzedzia_serwerowe_%E2%80%93_Query_Monitor_New_Relic_logi\" >Krok 3: Wtyczki i narz\u0119dzia serwerowe \u2013 Query Monitor, New Relic, logi<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_odroznic_problemy_frontendu_od_backendu\" >Jak odr\u00f3\u017cni\u0107 problemy frontendu od backendu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Co_sprawdzic_w_diagnozie_%E2%80%93_piec_kluczowych_metryk\" >Co sprawdzi\u0107 w diagnozie \u2013 pi\u0119\u0107 kluczowych metryk<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_1_%E2%80%93_Zly_lub_zbyt_slaby_hosting_pod_WordPressa\" >B\u0142\u0105d 1 \u2013 Z\u0142y lub zbyt s\u0142aby hosting pod WordPressa<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-14\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_wygladaja_typowe_problemy_taniego_hostingu\" >Jak wygl\u0105daj\u0105 typowe problemy taniego hostingu<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-15\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_rozpoznac_ze_to_hosting_jest_waskim_gardlem\" >Jak rozpozna\u0107, \u017ce to hosting jest w\u0105skim gard\u0142em<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-16\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_wybrac_lepszy_hosting_pod_WordPressa\" >Jak wybra\u0107 lepszy hosting pod WordPressa<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-17\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_2_%E2%80%93_Przeladowany_motyw_i_ciezki_builder_stron\" >B\u0142\u0105d 2 \u2013 Prze\u0142adowany motyw i ci\u0119\u017cki builder stron<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-18\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Skad_sie_bierze_%E2%80%9Espuchniety%E2%80%9D_motyw\" >Sk\u0105d si\u0119 bierze \u201espuchni\u0119ty\u201d motyw<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-19\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_rozpoznac_ze_motyw_i_builder_sa_glownym_problemem\" >Jak rozpozna\u0107, \u017ce motyw i builder s\u0105 g\u0142\u00f3wnym problemem<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-20\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_odchudzic_istniejacy_motyw_i_builder\" >Jak odchudzi\u0107 istniej\u0105cy motyw i builder<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-21\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Kiedy_wymienic_motyw_lub_builder\" >Kiedy wymieni\u0107 motyw lub builder<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-22\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_motyw_i_builder_wplywaja_na_CLS_i_INP\" >Jak motyw i builder wp\u0142ywaj\u0105 na CLS i INP<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-23\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_3_%E2%80%93_Za_duzo_wtyczek_i_konflikty_miedzy_nimi\" >B\u0142\u0105d 3 \u2013 Za du\u017co wtyczek i konflikty mi\u0119dzy nimi<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-24\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_wtyczki_zabijaja_wydajnosc\" >Jak wtyczki zabijaj\u0105 wydajno\u015b\u0107<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-25\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_zdiagnozowac_wplyw_konkretnych_wtyczek\" >Jak zdiagnozowa\u0107 wp\u0142yw konkretnych wtyczek<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-26\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_bezpiecznie_odchudzic_zestaw_wtyczek\" >Jak bezpiecznie odchudzi\u0107 zestaw wtyczek<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-27\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Konflikty_wtyczek_a_cache_i_Core_Web_Vitals\" >Konflikty wtyczek a cache i Core Web Vitals<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-28\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_4_%E2%80%93_Nieprawidlowa_lub_brakujaca_konfiguracja_cache_strona_obiekty_przegladarka\" >B\u0142\u0105d 4 \u2013 Nieprawid\u0142owa lub brakuj\u0105ca konfiguracja cache (strona, obiekty, przegl\u0105darka)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-29\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_dziala_cache_w_WordPressie_i_gdzie_zwykle_jest_psuty\" >Jak dzia\u0142a cache w WordPressie i gdzie zwykle jest psuty<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-30\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Cache_strony_full_page_%E2%80%93_fundament_szybkiego_WordPressa\" >Cache strony (full page) \u2013 fundament szybkiego WordPressa<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-31\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Cache_obiektow_%E2%80%93_kiedy_faktycznie_ma_sens\" >Cache obiekt\u00f3w \u2013 kiedy faktycznie ma sens<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-32\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Cache_przegladarki_%E2%80%93_darmowe_przyspieszenie_ktore_czesto_jest_ignorowane\" >Cache przegl\u0105darki \u2013 darmowe przyspieszenie, kt\u00f3re cz\u0119sto jest ignorowane<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-33\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Typowe_bledy_w_konfiguracji_cache_ktore_psuja_Core_Web_Vitals\" >Typowe b\u0142\u0119dy w konfiguracji cache, kt\u00f3re psuj\u0105 Core Web Vitals<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-34\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_5_%E2%80%93_Nieoptymalne_obrazy_i_media_formaty_rozmiary_lazy_load\" >B\u0142\u0105d 5 \u2013 Nieoptymalne obrazy i media (formaty, rozmiary, lazy load)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-35\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Dlaczego_obrazy_potrafia_%E2%80%9Ezjesc%E2%80%9D_LCP\" >Dlaczego obrazy potrafi\u0105 \u201ezje\u015b\u0107\u201d LCP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-36\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_po_kroku_porzadek_w_obrazach_dla_LCP\" >Krok po kroku: porz\u0105dek w obrazach dla LCP<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-37\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_6_%E2%80%93_Zbyt_ciezki_i_chaotyczny_JavaScript_blokujacy_interakcje_i_psujacy_INP\" >B\u0142\u0105d 6 \u2013 Zbyt ci\u0119\u017cki i chaotyczny JavaScript (blokuj\u0105cy interakcj\u0119 i psuj\u0105cy INP)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-38\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_JS_zabija_INP_i_FID_w_WordPressie\" >Jak JS zabija INP i FID w WordPressie<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-39\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_po_kroku_porzadki_w_JavaScript\" >Krok po kroku: porz\u0105dki w JavaScript<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-40\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_7_%E2%80%93_Zle_zoptymalizowane_CSS_i_krytyczne_style_FOUC_layout_shift_i_wolny_render\" >B\u0142\u0105d 7 \u2013 \u0179le zoptymalizowane CSS i krytyczne style (FOUC, layout shift i wolny render)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-41\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Jak_CSS_potrafi_opoznic_FCP_i_LCP\" >Jak CSS potrafi op\u00f3\u017ani\u0107 FCP i LCP<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-42\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_po_kroku_uproszczenie_i_podzial_CSS\" >Krok po kroku: uproszczenie i podzia\u0142 CSS<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-43\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Blad_8_%E2%80%93_Zbyt_ciezkie_i_zle_wpiete_zewnetrzne_skrypty_analityka_tag_manager_chaty\" >B\u0142\u0105d 8 \u2013 Zbyt ci\u0119\u017ckie i \u017ale wpi\u0119te zewn\u0119trzne skrypty (analityka, tag manager, chaty)<\/a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-44\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Dlaczego_integracje_marketingowe_psuja_Core_Web_Vitals\" >Dlaczego integracje marketingowe psuj\u0105 Core Web Vitals<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-45\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Krok_po_kroku_jak_okielznac_zewnetrzne_skrypty\" >Krok po kroku: jak okie\u0142zna\u0107 zewn\u0119trzne skrypty<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-46\" href=\"https:\/\/excelraport.pl\/index.php\/2026\/05\/20\/bledy-wordpress-core-web-vitals\/#Zrodla_informacji\" >\u0179r\u00f3d\u0142a informacji<\/a><\/li><\/ul><\/nav><\/div>\n<h2><span class=\"ez-toc-section\" id=\"Dlaczego_Core_Web_Vitals_i_wydajnosc_WordPressa_sa_dzis_kluczowe\"><\/span>Dlaczego Core Web Vitals i wydajno\u015b\u0107 WordPressa s\u0105 dzi\u015b kluczowe<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Core_Web_Vitals_po_ludzku_LCP_CLS_INP\"><\/span>Core Web Vitals po ludzku: LCP, CLS, INP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Core Web Vitals to trzy wska\u017aniki, kt\u00f3re m\u00f3wi\u0105, czy strona \u201eczuje si\u0119\u201d szybka i stabilna dla u\u017cytkownika. Nie s\u0105 to abstrakcyjne techniczne parametry \u2013 ka\u017cdy z nich odpowiada za realne odczucie wygody korzystania ze strony.<\/p>\n<p><strong>LCP (Largest Contentful Paint)<\/strong> mierzy, jak szybko \u0142aduje si\u0119 najwi\u0119kszy, g\u0142\u00f3wny element widoczny w oknie przegl\u0105darki \u2013 zwykle jest to du\u017cy obraz, slider, sekcja hero lub du\u017cy nag\u0142\u00f3wek. S\u0142aby LCP oznacza, \u017ce u\u017cytkownik d\u0142ugo czeka na \u201ekonkretn\u0105\u201d tre\u015b\u0107, cho\u0107 mo\u017ce ju\u017c widzie\u0107 pasek \u0142adowania czy szkielet strony.<\/p>\n<p><strong>CLS (Cumulative Layout Shift)<\/strong> m\u00f3wi, jak bardzo \u201eskacze\u201d uk\u0142ad strony podczas \u0142adowania. To te irytuj\u0105ce sytuacje, gdy chcesz klikn\u0105\u0107 przycisk, a tu nagle wczytuje si\u0119 reklama albo obraz, wszystko si\u0119 przesuwa i klikasz co\u015b innego. W WordPressie winne s\u0105 cz\u0119sto \u017ale wstawione obrazki, dynamiczne bannery, zewn\u0119trzne widgety i fonty.<\/p>\n<p><strong>INP (Interaction to Next Paint)<\/strong> zast\u0105pi\u0142 FID. Mierzy, jak szybko strona reaguje na akcje u\u017cytkownika \u2013 klikni\u0119cia, wprowadzanie tekstu, gesty. W praktyce: czy po klikni\u0119ciu przycisku \u201eDodaj do koszyka\u201d strona natychmiast reaguje, czy przez sekund\u0119 \u201emy\u015bli\u201d. Na INP mocno wp\u0142ywaj\u0105 ci\u0119\u017ckie skrypty JS, page buildery i z\u0142o\u017cone wtyczki WooCommerce, analityka \u0142adowana synchronicznie, rozbudowane menu i pop\u2011upy.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Wolny_WordPress_a_SEO_konwersje_i_doswiadczenie_uzytkownika\"><\/span>Wolny WordPress a SEO, konwersje i do\u015bwiadczenie u\u017cytkownika<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Wydajno\u015b\u0107 strony opartej na WordPressie nie jest tylko \u201etechnikali\u0105\u201d. Bezpo\u015brednio przek\u0142ada si\u0119 na:<\/p>\n<ul>\n<li><strong>pozycje w Google<\/strong> \u2013 Core Web Vitals to element sygna\u0142u Page Experience; s\u0142abe wyniki mog\u0105 obni\u017ca\u0107 widoczno\u015b\u0107, zw\u0142aszcza w konkurencyjnych bran\u017cach, gdzie wiele stron ma podobn\u0105 jako\u015b\u0107 tre\u015bci i link\u00f3w,<\/li>\n<li><strong>konwersje<\/strong> \u2013 im d\u0142u\u017cej \u0142aduje si\u0119 strona, tym wi\u0119cej u\u017cytkownik\u00f3w rezygnuje przed zakupem czy wys\u0142aniem formularza; szczeg\u00f3lnie bole\u015bnie wida\u0107 to na mobile,<\/li>\n<li><strong>wsp\u00f3\u0142czynnik odrzuce\u0144<\/strong> \u2013 u\u017cytkownicy przyzwyczajeni do natychmiastowych reakcji aplikacji mobilnych nie czekaj\u0105 5\u20138 sekund, a\u017c WordPress \u201esi\u0119 namy\u015bli\u201d.<\/li>\n<\/ul>\n<p>Przy s\u0142abej wydajno\u015bci WordPressa dziej\u0105 si\u0119 trzy rzeczy naraz: rosn\u0105 koszty (wi\u0119cej ruchu p\u0142atnego, \u017ceby osi\u0105gn\u0105\u0107 ten sam efekt), spadaj\u0105 przychody (mniej konwersji z ruchu organicznego i p\u0142atnego), a u\u017cytkownicy buduj\u0105 skojarzenie \u201eta marka = m\u0119cz\u0105ca, wolna strona\u201d.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Elastycznosc_WordPressa_kontra_%E2%80%9Espuchniete%E2%80%9D_strony\"><\/span>Elastyczno\u015b\u0107 WordPressa kontra \u201espuchni\u0119te\u201d strony<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPress daje mn\u00f3stwo swobody: motywy, buildery, setki tysi\u0119cy wtyczek. Ta elastyczno\u015b\u0107 ma jednak skutki uboczne. Najcz\u0119stszy scenariusz:<\/p>\n<ul>\n<li>instalacja ci\u0119\u017ckiego motywu \u201eall in one\u201d,<\/li>\n<li>dodanie page buildera (Elementor, WPBakery, Divi, inny),<\/li>\n<li>do tego kilka pakiet\u00f3w dodatk\u00f3w (addons\u00f3w) do buildera,<\/li>\n<li>kilkana\u015bcie wtyczek \u201eod wszystkiego\u201d: popupy, social media, formularze, galerie,<\/li>\n<li>hosting z dolnej p\u00f3\u0142ki, bez sensownego cache i szybkiego dysku.<\/li>\n<\/ul>\n<p>Efekt: ka\u017cdy element frontendu korzysta z w\u0142asnych CSS i JS. Strona \u0142aduje dziesi\u0105tki plik\u00f3w, cz\u0119sto z duplikuj\u0105c\u0105 si\u0119 funkcjonalno\u015bci\u0105 (np. trzy r\u00f3\u017cne biblioteki slider\u00f3w). Do tego dochodz\u0105 \u017ale skompresowane obrazy, webfonty z kilkunastoma wariantami grubo\u015bci, brak cache \u2013 i wyniki Core Web Vitals lec\u0105 w d\u00f3\u0142.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Praktyczny_przyklad_sklep_WooCommerce_przed_i_po_optymalizacji\"><\/span>Praktyczny przyk\u0142ad: sklep WooCommerce przed i po optymalizacji<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Typowy przypadek z praktyki: niewielki sklep WooCommerce na WordPressie, postawiony na motywie premium z wbudowanym builderem. Strona g\u0142\u00f3wna ma spory slider, kilka sekcji \u201ebestsellery\u201d, blog poni\u017cej. W\u0142a\u015bciciel narzeka, \u017ce reklamy Google Ads s\u0142abo dzia\u0142aj\u0105, a wyniki w Search Console pokazuj\u0105 \u201eS\u0142abe URL-e z powodu CWV\u201d.<\/p>\n<p>Po testach PageSpeed Insights i WebPageTest wychodz\u0105 problemy: LCP powy\u017cej 4 s na mobile, wysoki CLS przez doskakuj\u0105ce banery i obrazki bez wymiar\u00f3w, INP s\u0142aby, bo skrypty JS z buildera i kilku wtyczek do popup\u00f3w blokuj\u0105 interakcje. Dodatkowo TTFB jest bardzo wysoki \u2013 hosting ledwo zipie.<\/p>\n<p>Po przenosinach na lepszy serwer, w\u0142\u0105czeniu sensownej wtyczki cache, kompresji obraz\u00f3w, odchudzeniu buildera (wy\u0142\u0105czenie zb\u0119dnych widget\u00f3w) i wyrzuceniu dw\u00f3ch ci\u0119\u017ckich wtyczek popup\u00f3w (zast\u0105pionych l\u017cejszym rozwi\u0105zaniem) LCP spada poni\u017cej 2,5 s, CLS wraca do zielonej strefy, a INP poprawia si\u0119 dzi\u0119ki op\u00f3\u017anieniu \u0142adowania cz\u0119\u015bci skrypt\u00f3w. Z tego samego ruchu sklep generuje znacznie wi\u0119cej transakcji.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Co_sprawdzic_na_start_szybki_test_PageSpeed_i_WebPageTest\"><\/span>Co sprawdzi\u0107 na start: szybki test PageSpeed i WebPageTest<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Krok 1: uruchom <strong>PageSpeed Insights<\/strong>, wpisz adres strony g\u0142\u00f3wnej i jednego wa\u017cnego podstrony (np. produkt lub oferta). Zwr\u00f3\u0107 uwag\u0119 na:<\/p>\n<ul>\n<li>kolor wska\u017anik\u00f3w LCP, CLS, INP dla mobile i desktopu,<\/li>\n<li>czas TTFB \/ \u201eczas do pierwszego bajtu\u201d (sekcja \u201eDiagnostyka\u201d),<\/li>\n<li>wielko\u015b\u0107 transferu (obrazki, JS, CSS),<\/li>\n<li>sekcje \u201eZwi\u0119ksz wydajno\u015b\u0107 obrazu\u201d, \u201eUsu\u0144 nieu\u017cywany kod JavaScript\/CSS\u201d.<\/li>\n<\/ul>\n<p>Krok 2: uruchom <strong>WebPageTest<\/strong> (lub GTmetrix) z lokalizacj\u0105 zbli\u017con\u0105 do twoich u\u017cytkownik\u00f3w, wybierz przegl\u0105dark\u0119 mobiln\u0105 i przetestuj stron\u0119 co najmniej 3 razy. Patrz przede wszystkim na:<\/p>\n<ul>\n<li>TTFB \u2013 je\u015bli jest wysoki, to cz\u0119sto w\u0105skie gard\u0142o serwera,<\/li>\n<li>\u201eFully Loaded Time\u201d oraz \u201eLargest Contentful Paint\u201d,<\/li>\n<li>liczb\u0119 zapyta\u0144 (requests) i og\u00f3lny rozmiar strony (Total size).<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: zanotuj (lub zr\u00f3b zrzuty ekranu) warto\u015bci LCP, CLS, INP, TTFB oraz ca\u0142kowity rozmiar strony \u2013 b\u0119d\u0105 referencj\u0105 po optymalizacji.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Jak_prawidlowo_diagnozowac_problemy_wydajnosci_w_WordPressie\"><\/span>Jak prawid\u0142owo diagnozowa\u0107 problemy wydajno\u015bci w WordPressie<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Krok_1_Testy_zewnetrzne_%E2%80%93_PageSpeed_Lighthouse_GTmetrix_WebPageTest\"><\/span>Krok 1: Testy zewn\u0119trzne \u2013 PageSpeed, Lighthouse, GTmetrix, WebPageTest<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Pierwsza diagnoza to zawsze spojrzenie z zewn\u0105trz. Najszybciej da si\u0119 wy\u0142apa\u0107, czy problem dotyczy frontendu (du\u017ce pliki, obrazy, CSS, JS), czy backendu (wyd\u0142u\u017cony czas generowania strony przez PHP i baz\u0119 danych).<\/p>\n<p>Skuteczny schemat:<\/p>\n<ol>\n<li><strong>PageSpeed Insights<\/strong> \u2013 podstawowy test CWV, metryki polowe (je\u015bli strona ma ruch), rekomendacje optymalizacyjne.<\/li>\n<li><strong>Lighthouse w Chrome<\/strong> \u2013 szczeg\u00f3\u0142owy audyt wydajno\u015bci (CTRL+SHIFT+I \u2192 zak\u0142adka Lighthouse \u2192 Generate report).<\/li>\n<li><strong>GTmetrix<\/strong> \u2013 dobra wizualizacja \u201eWaterfall\u201d i czas\u00f3w poszczeg\u00f3lnych zasob\u00f3w.<\/li>\n<li><strong>WebPageTest<\/strong> \u2013 zaawansowane podej\u015bcie do TTFB, powtarzane testy, filmik \u0142adowania strony.<\/li>\n<\/ol>\n<p>Na co patrze\u0107 krok po kroku:<\/p>\n<ul>\n<li>czy <strong>LCP<\/strong> jest powy\u017cej 2,5 s (zielona strefa), 4 s (pomara\u0144czowa), czy jeszcze gorzej,<\/li>\n<li>czy <strong>CLS<\/strong> przekracza 0,1 (wysokie przeskoki uk\u0142adu),<\/li>\n<li>czy <strong>INP<\/strong> jest wyra\u017anie powy\u017cej 200\u2013300 ms (strona reaguje ospale),<\/li>\n<li>czy <strong>TTFB<\/strong> przekracza 600\u2013800 ms \u2013 je\u015bli tak, cz\u0119sto problem le\u017cy w hostingu\/serwerze lub ci\u0119\u017ckim PHP,<\/li>\n<li>ile jest zapyta\u0144 (requests) i ilu z nich mo\u017cna unikn\u0105\u0107 (niepotrzebne zewn\u0119trzne skrypty, fonty, wtyczki).<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Krok_2_Chrome_DevTools_%E2%80%93_Performance_i_Network\"><\/span>Krok 2: Chrome DevTools \u2013 Performance i Network<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Drugi krok to narz\u0119dzia wbudowane w przegl\u0105dark\u0119. Chrome DevTools pozwala podejrze\u0107, co realnie dzieje si\u0119 podczas \u0142adowania strony z perspektywy u\u017cytkownika.<\/p>\n<p>Podstawowe dzia\u0142ania:<\/p>\n<ul>\n<li>otw\u00f3rz stron\u0119 w Chrome,<\/li>\n<li>CTRL+SHIFT+I (lub F12) \u2192 zak\u0142adka <strong>Network<\/strong>,<\/li>\n<li>w\u0142\u0105cz \u201eDisable cache\u201d, od\u015bwie\u017c stron\u0119 (CTRL+R),<\/li>\n<li>posortuj zasoby po \u201eTime\u201d i \u201eSize\u201d \u2013 zobacz, kt\u00f3re pliki s\u0105 najwi\u0119ksze i \u0142aduj\u0105 si\u0119 najd\u0142u\u017cej.<\/li>\n<\/ul>\n<p>W zak\u0142adce <strong>Performance<\/strong> nagraj profil \u0142adowania (Record \u2192 od\u015bwie\u017c stron\u0119 \u2192 Stop). Interesuj\u0105 ci\u0119 g\u0142\u00f3wnie:<\/p>\n<ul>\n<li>czy JavaScript d\u0142ugo blokuje w\u0105tek g\u0142\u00f3wny (d\u0142ugie niebieskie\/pomara\u0144czowe bloki),<\/li>\n<li>czy pierwsze renderowanie jest mocno op\u00f3\u017anione (First paint, First contentful paint),<\/li>\n<li>czy widoczne s\u0105 powtarzaj\u0105ce si\u0119, ci\u0119\u017ckie eventy (np. skrypty slider\u00f3w, animacje).<\/li>\n<\/ul>\n<p>Je\u017celi w zak\u0142adce Network widzisz jeden lub kilka plik\u00f3w JS\/CSS, kt\u00f3re dominuj\u0105 czas i rozmiar, to masz trop: strona jest prze\u0142adowana kodem \u2013 zwykle przez motyw, builder lub wtyczki.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Krok_3_Wtyczki_i_narzedzia_serwerowe_%E2%80%93_Query_Monitor_New_Relic_logi\"><\/span>Krok 3: Wtyczki i narz\u0119dzia serwerowe \u2013 Query Monitor, New Relic, logi<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Je\u015bli TTFB jest wysoki, a nawet pusta strona generuje si\u0119 powoli, trzeba zej\u015b\u0107 poziom ni\u017cej \u2013 do backendu.<\/p>\n<p>Podstawowe narz\u0119dzia:<\/p>\n<ul>\n<li><strong>Query Monitor<\/strong> \u2013 wtyczka WordPress do analizy zapyta\u0144 do bazy, czasu generowania strony, hook\u00f3w i b\u0142\u0119d\u00f3w PHP,<\/li>\n<li><strong>New Relic<\/strong> (lub podobne APM) \u2013 je\u015bli hosting daje dost\u0119p, pozwala \u015bledzi\u0107, kt\u00f3re funkcje i wtyczki zu\u017cywaj\u0105 najwi\u0119cej zasob\u00f3w,<\/li>\n<li><strong>logi serwera<\/strong> (error_log, access_log) \u2013 b\u0142\u0119dy PHP, powolne zapytania MySQL.<\/li>\n<\/ul>\n<p>Z Query Monitor krok po kroku:<\/p>\n<ol>\n<li>Zainstaluj i w\u0142\u0105cz wtyczk\u0119.<\/li>\n<li>Wejd\u017a na stron\u0119, kt\u00f3ra \u0142aduje si\u0119 wolno (np. produkt, archiwum kategorii).<\/li>\n<li>Na g\u00f3rnej belce admina zobaczysz informacj\u0119 o czasie generowania, liczbie zapyta\u0144 i u\u017cytej pami\u0119ci.<\/li>\n<li>Kliknij Query Monitor i przejd\u017a przez zak\u0142adki:\n<ul>\n<li><strong>Queries<\/strong> \u2013 kt\u00f3re zapytania s\u0105 najwolniejsze,<\/li>\n<li><strong>Hooks<\/strong> \u2013 kt\u00f3re akcje\/filtery d\u0142ugo si\u0119 wykonuj\u0105,<\/li>\n<li><strong>HTTP API Calls<\/strong> \u2013 czy w czasie \u0142adowania strona nie robi zewn\u0119trznych zapyta\u0144 (API, licencje wtyczek).<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<h3><span class=\"ez-toc-section\" id=\"Jak_odroznic_problemy_frontendu_od_backendu\"><\/span>Jak odr\u00f3\u017cni\u0107 problemy frontendu od backendu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przyspieszenie WordPressa idzie najsprawniej, gdy wiadomo, gdzie jest najwi\u0119kszy problem. Najprostsza regu\u0142a:<\/p>\n<ul>\n<li>je\u015bli TTFB jest wysoki, a potem strona \u0142aduje si\u0119 w miar\u0119 szybko \u2013 wina po stronie <strong>backendu<\/strong> (hosting, PHP, baza, wtyczki wykonuj\u0105ce ci\u0119\u017ckie operacje),<\/li>\n<li>je\u015bli TTFB jest akceptowalny, ale ca\u0142o\u015b\u0107 trwa d\u0142ugo \u2013 problem le\u017cy g\u0142\u00f3wnie po stronie <strong>frontendu<\/strong> (za du\u017co JS, CSS, obraz\u00f3w, zewn\u0119trzne skrypty).<\/li>\n<\/ul>\n<p>Dobry test to stworzenie prostego szablonu (np. plik page-szybki.php z minimalnym HTML, bez sidebar\u00f3w, slider\u00f3w, buildera) i ustawienie go jako szablon konkretnej strony. Je\u015bli taki \u201ego\u0142y\u201d widok \u0142aduje si\u0119 b\u0142yskawicznie, to problem jest w motywie\/builderze\/wtyczkach frontendowych. Je\u015bli i tak jest wolno \u2013 trzeba przyjrze\u0107 si\u0119 serwerowi i logice PHP.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Co_sprawdzic_w_diagnozie_%E2%80%93_piec_kluczowych_metryk\"><\/span>Co sprawdzi\u0107 w diagnozie \u2013 pi\u0119\u0107 kluczowych metryk<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Na etapie diagnostyki zapisz:<\/p>\n<ul>\n<li><strong>TTFB<\/strong> (czas do pierwszego bajtu) \u2013 z WebPageTest\/DevTools,<\/li>\n<li><strong>LCP<\/strong> \u2013 z PageSpeed Insights i Lighthouse,<\/li>\n<li><strong>CLS<\/strong> \u2013 z PageSpeed Insights,<\/li>\n<li><strong>INP<\/strong> \u2013 z PageSpeed Insights (i ewentualnie CrUX, je\u015bli masz dane polowe),<\/li>\n<li><strong>liczb\u0119 zapyta\u0144 i rozmiar strony<\/strong> \u2013 z GTmetrix\/WebPageTest\/DevTools.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: upewnij si\u0119, \u017ce masz wyniki dla <strong>mobile<\/strong> i <strong>desktopu<\/strong>, oraz \u017ce testowa\u0142e\u015b:<\/p>\n<ul>\n<li>stron\u0119 g\u0142\u00f3wn\u0105,<\/li>\n<li>typow\u0105 stron\u0119 tre\u015bciow\u0105 (np. wpis na blogu),<\/li>\n<li>kluczow\u0105 stron\u0119 biznesow\u0105 (produkt, oferta, koszyk\/kasa).<\/li>\n<\/ul>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/zblizenie-na-stara-maszyne-do-pisania-z-kartka-z-napisem-wor-pexels-4160094.jpg\" alt=\"Zbli\u017cenie na star\u0105 maszyn\u0119 do pisania z kartk\u0105 z napisem WordPress\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: Markus Winkler<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Blad_1_%E2%80%93_Zly_lub_zbyt_slaby_hosting_pod_WordPressa\"><\/span>B\u0142\u0105d 1 \u2013 Z\u0142y lub zbyt s\u0142aby hosting pod WordPressa<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jak_wygladaja_typowe_problemy_taniego_hostingu\"><\/span>Jak wygl\u0105daj\u0105 typowe problemy taniego hostingu<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nawet najlepiej zoptymalizowany motyw i wtyczki nie nadrobi\u0105 brak\u00f3w po stronie serwera. Tani hosting wsp\u00f3\u0142dzielony ma cz\u0119sto kilka powa\u017cnych wad:<\/p>\n<ul>\n<li><strong>wolne dyski<\/strong> (brak SSD\/NVMe) \u2013 wszystko, co dotyczy bazy danych i plik\u00f3w, dzia\u0142a ospale,<\/li>\n<li><strong>brak cache na poziomie serwera<\/strong> \u2013 brak wbudowanego cache LiteSpeed\/NGINX, brak obiektowego cache,<\/li>\n<\/ul>\n<ul>\n<li><strong>przeci\u0105\u017cone serwery<\/strong> \u2013 zbyt wiele kont na jednej maszynie, co skutkuje losowymi \u201epikami\u201d TTFB i spadkami wydajno\u015bci w godzinach szczytu,<\/li>\n<li><strong>agresywne limity<\/strong> (CPU, RAM, I\/O, liczba proces\u00f3w) \u2013 przy wi\u0119kszym ruchu strona dostaje \u201ezadyszki\u201d, pojawiaj\u0105 si\u0119 503\/508 lub czas odpowiedzi ro\u015bnie kilkukrotnie,<\/li>\n<li><strong>stare wersje PHP i MySQL<\/strong> \u2013 brak wsparcia dla nowszych technologii oraz realnie wolniejsze wykonywanie skrypt\u00f3w.<\/li>\n<\/ul>\n<p>Efekt w praktyce: LCP i INP skacz\u0105 bez wyra\u017anego powodu, a testy z r\u00f3\u017cnych godzin dnia pokazuj\u0105 zupe\u0142nie inne wyniki. Zdarza si\u0119 te\u017c, \u017ce panel hostingu wygl\u0105da nowocze\u015bnie, ale pod spodem wci\u0105\u017c dzia\u0142a przestarza\u0142a infrastruktura \u2013 r\u00f3\u017cnic\u0119 wida\u0107 dopiero po przej\u015bciu na lepszego dostawc\u0119.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_rozpoznac_ze_to_hosting_jest_waskim_gardlem\"><\/span>Jak rozpozna\u0107, \u017ce to hosting jest w\u0105skim gard\u0142em<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Krok 1: por\u00f3wnaj TTFB dla <strong>statycznego pliku<\/strong> (np. ma\u0142y .html wrzucony do katalogu g\u0142\u00f3wnego) i dla strony WordPressa. Je\u015bli statyczny plik ma TTFB znacznie powy\u017cej 300\u2013400 ms, to serwer sam w sobie reaguje wolno. Je\u015bli statyczny plik jest szybki, a WordPress wolny \u2013 problemem jest aplikacja (motyw\/wtyczki\/baza).<\/p>\n<p>Krok 2: uruchom proste testy obci\u0105\u017ceniowe (np. loader.io, k6) lub wykorzystaj wbudowane narz\u0119dzia hostingu, je\u015bli s\u0105. Przy kilkunastu\u2013kilkudziesi\u0119ciu r\u00f3wnoczesnych \u017c\u0105daniach s\u0142aby hosting zacznie szybko zwi\u0119ksza\u0107 czas odpowiedzi albo zwraca\u0107 b\u0142\u0119dy 5xx. To sygna\u0142, \u017ce skala zasob\u00f3w jest niewystarczaj\u0105ca, zw\u0142aszcza dla sklepu czy strony z kampani\u0105 reklamow\u0105.<\/p>\n<p>Krok 3: sprawd\u017a wersje oprogramowania: PHP (co najmniej 8.0+), typ bazy (MariaDB\/MySQL w aktualnych wydaniach), typ serwera HTTP (Apache, LiteSpeed, NGINX). Hosting, kt\u00f3ry latami trzyma stare wersje i nie daje mo\u017cliwo\u015bci \u0142atwej zmiany, b\u0119dzie ograniczeniem przy ka\u017cdej powa\u017cniejszej optymalizacji.<\/p>\n<p>Co sprawdzi\u0107: zanotuj TTFB dla statycznego pliku i strony WordPress, stabilno\u015b\u0107 czasu odpowiedzi przy kilku powt\u00f3rzeniach testu oraz dost\u0119pne wersje PHP\/MySQL w panelu hostingu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_wybrac_lepszy_hosting_pod_WordPressa\"><\/span>Jak wybra\u0107 lepszy hosting pod WordPressa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przy wyborze hostingu warto i\u015b\u0107 konkretnymi krokami, zamiast kierowa\u0107 si\u0119 wy\u0142\u0105cznie cen\u0105 lub \u201enielimitowanym transferem\u201d.<\/p>\n<ul>\n<li><strong>Krok 1:<\/strong> szukaj hostingu z dyskami <strong>SSD\/NVMe<\/strong>, cache na poziomie serwera (LiteSpeed Cache, NGINX microcache, Redis\/Memcached) oraz jasnymi limitami zasob\u00f3w (CPU, RAM, I\/O).<\/li>\n<li><strong>Krok 2:<\/strong> sprawd\u017a, czy dostawca ma <strong>lokalizacj\u0119 serwera blisko twoich u\u017cytkownik\u00f3w<\/strong> (np. DC w Polsce lub UE, je\u015bli masz ruch z Polski). Kr\u00f3tszy dystans to ni\u017cszy RTT, a wi\u0119c lepszy TTFB.<\/li>\n<li><strong>Krok 3:<\/strong> upewnij si\u0119, \u017ce hosting pozwala szybko prze\u0142\u0105cza\u0107 wersje PHP, ma automatyczne kopie zapasowe oraz sensowne limity skrzynek e\u2011mail, proces\u00f3w i baz danych.<\/li>\n<li><strong>Krok 4:<\/strong> przetestuj <strong>wersj\u0119 trial<\/strong> lub miesi\u0119czny plan \u2013 wrzu\u0107 kopi\u0119 strony, zr\u00f3b testy PageSpeed\/WebPageTest i por\u00f3wnaj z aktualnym serwerem.<\/li>\n<\/ul>\n<p>Dla WordPressa zwykle najlepiej sprawdzaj\u0105 si\u0119: p\u00f3\u0142\u2011dedykowane plany wsp\u00f3\u0142dzielone o wy\u017cszych parametrach, serwery VPS z zarz\u0105dzaniem (dla wi\u0119kszych projekt\u00f3w) albo specjalistyczne hostingi \u201emanaged WordPress\u201d, kt\u00f3re maj\u0105 sensownie skonfigurowany cache i PHP-FPM.<\/p>\n<p>Co sprawdzi\u0107: por\u00f3wnaj wyniki CWV (zw\u0142aszcza LCP i TTFB) przed i po migracji testowej, oce\u0144 stabilno\u015b\u0107 podczas ruchu oraz jako\u015b\u0107 wsparcia technicznego w sytuacjach awaryjnych.<\/p>\n<p>Przy migracji unikaj chaotycznych dzia\u0142a\u0144. Krok 1: zr\u00f3b pe\u0142n\u0105 kopi\u0119 zapasow\u0105 (plik\u00f3w i bazy) i przetestuj przywracanie, najlepiej na \u015brodowisku testowym. Krok 2: przeprowad\u017a przenosiny w godzinach najmniejszego ruchu, w\u0142\u0105cz tryb konserwacji i pilnuj, \u017ceby DNS by\u0142 prze\u0142\u0105czany dopiero po pozytywnym te\u015bcie na nowym serwerze. Krok 3: po migracji wyczy\u015b\u0107 cache (na serwerze, w WordPressie i w CDN), od\u015bwie\u017c permalinki i przeprowad\u017a komplet test\u00f3w wydajno\u015bci oraz funkcjonalno\u015bci (logowanie, zam\u00f3wienia, formularze).<\/p>\n<p>Cz\u0119sty b\u0142\u0105d przy zmianie hostingu to \u201ewrzucenie\u201d strony na nowy serwer bez dopasowania konfiguracji: brak w\u0142\u0105czonego opcache, niewykorzystany Redis\/Memcached, PHP ustawione na domy\u015blne, ale wolniejsze parametry. W efekcie p\u0142aci si\u0119 za lepsz\u0105 infrastruktur\u0119, a realny zysk jest znikomy. Dobrze jest przej\u015b\u0107 przez checklist\u0119 optymalizacji: w\u0142a\u015bciwa wersja PHP, w\u0142\u0105czone cache na poziomie serwera, poprawnie skonfigurowany WordPress i przetestowane CWV.<\/p>\n<p>Je\u015bli po stronie hostingu wszystko jest ustawione poprawnie, a mimo to wyniki nadal s\u0105 niezadowalaj\u0105ce, strza\u0142ka winy przesuwa si\u0119 na motyw, builder, wtyczki i konfiguracj\u0119 cache po stronie aplikacji. Solidny serwer daje wtedy \u201eczyste t\u0142o\u201d \u2013 masz pewno\u015b\u0107, \u017ce kolejne kroki optymalizacji nie rozbijaj\u0105 si\u0119 o ograniczenia infrastruktury, tylko realnie poprawiaj\u0105 Core Web Vitals.<\/p>\n<p>Dobrze dobrany hosting zdejmuje z bark\u00f3w spor\u0105 cz\u0119\u015b\u0107 technicznych problem\u00f3w: stabilizuje TTFB, u\u0142atwia konfiguracj\u0119 cache i zapewnia przewidywalno\u015b\u0107 pod obci\u0105\u017ceniem. Reszta pracy to ju\u017c kwestia ustawienia WordPressa, motywu, wtyczek i frontendu tak, \u017ceby ca\u0142o\u015b\u0107 wykorzysta\u0142a potencja\u0142 serwera zamiast go marnowa\u0107.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Blad_2_%E2%80%93_Przeladowany_motyw_i_ciezki_builder_stron\"><\/span>B\u0142\u0105d 2 \u2013 Prze\u0142adowany motyw i ci\u0119\u017cki builder stron<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Skad_sie_bierze_%E2%80%9Espuchniety%E2%80%9D_motyw\"><\/span>Sk\u0105d si\u0119 bierze \u201espuchni\u0119ty\u201d motyw<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Nowoczesne motywy i buildery kusz\u0105 gotowymi szablonami, animacjami i \u201erobi\u0105cym wra\u017cenie\u201d designem. Technicznie jednak cz\u0119sto oznacza to:<\/p>\n<ul>\n<li><strong>setki kilobajt\u00f3w CSS i JS<\/strong> \u0142adowanych na ka\u017cdej podstronie, niezale\u017cnie od tego, czy dana funkcja jest u\u017cywana,<\/li>\n<li><strong>dziesi\u0105tki request\u00f3w<\/strong> do plik\u00f3w motywu, child-theme i buildera,<\/li>\n<li><strong>du\u017ce biblioteki JS<\/strong> (np. jQuery UI, animacje, sliderowe frameworki) dorzucane \u201ena wszelki wypadek\u201d,<\/li>\n<li><strong>globalne style inline<\/strong> generowane przez builder na ka\u017cdej podstronie,<\/li>\n<li><strong>\u0142adowanie font\u00f3w i ikon<\/strong> zewn\u0119trznie (np. Google Fonts, Font Awesome CDN) bez kontroli nad ich zakresem.<\/li>\n<\/ul>\n<p>W praktyce LCP cierpi, bo przegl\u0105darka musi wczyta\u0107 i przeanalizowa\u0107 mas\u0119 plik\u00f3w, zanim poka\u017ce g\u0142\u00f3wny element strony. INP potrafi rosn\u0105\u0107, gdy ci\u0119\u017cki JS buildera blokuje interakcje tu\u017c po za\u0142adowaniu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_rozpoznac_ze_motyw_i_builder_sa_glownym_problemem\"><\/span>Jak rozpozna\u0107, \u017ce motyw i builder s\u0105 g\u0142\u00f3wnym problemem<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Krok 1: przeanalizuj <strong>liczb\u0119 i rozmiar plik\u00f3w CSS\/JS<\/strong> w DevTools lub GTmetrix. Je\u015bli:<\/p>\n<ul>\n<li>\u0142\u0105czny rozmiar CSS przekracza ~200\u2013300 kB nieskompresowanych styl\u00f3w,<\/li>\n<p>  &lt;li\u0142\u0105czny rozmiar JS idzie w setki kilobajt\u00f3w lub megabajt,<\/p>\n<li>masz wiele plik\u00f3w typu <code>theme.css<\/code>, <code>global.css<\/code>, <code>builder-frontend.js<\/code>, <code>animations.js<\/code>,<\/li>\n<\/ul>\n<p>to sygna\u0142, \u017ce motyw\/builder robi du\u017co ponad to, czego potrzebujesz.<\/p>\n<p>Krok 2: utw\u00f3rz prost\u0105 stron\u0119 testow\u0105 bez buildera (np. klasyczny edytor blokowy, zwyk\u0142y tekst + obrazek) i przypisz jej <strong>najprostszy dost\u0119pny szablon<\/strong> (np. \u201eFull Width\u201d bez sidebara). Por\u00f3wnaj:<\/p>\n<ul>\n<li>czas LCP i FCP,<\/li>\n<li>liczb\u0119 request\u00f3w,<\/li>\n<li>\u0142\u0105czny rozmiar strony.<\/li>\n<\/ul>\n<p>Je\u015bli prosta strona na tym samym motywie jest wyra\u017anie l\u017cejsza i szybsza \u2013 winny jest g\u0142\u00f3wnie builder i u\u017cyte modu\u0142y. Je\u015bli nawet \u201ego\u0142a\u201d podstrona jest ci\u0119\u017cka, problemem jest sam motyw (jego \u201ecore\u201d).<\/p>\n<p>Krok 3: w\u0142\u0105cz motyw domy\u015blny WordPress (np. Twenty Twenty-Four) na klonie strony (staging). Je\u015bli wyniki CWV natychmiast si\u0119 poprawi\u0105, a TTFB pozostaje podobny \u2013 g\u0142\u00f3wnym w\u0105skim gard\u0142em jest aktualny motyw\/builder.<\/p>\n<p>Co sprawdzi\u0107: por\u00f3wnaj LCP, liczb\u0119 request\u00f3w i rozmiar strony dla trzech wariant\u00f3w \u2013 pe\u0142na strona z builderem, prosta strona na tym samym motywie, ta sama zawarto\u015b\u0107 na motywie domy\u015blnym.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_odchudzic_istniejacy_motyw_i_builder\"><\/span>Jak odchudzi\u0107 istniej\u0105cy motyw i builder<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Je\u017celi wymiana motywu \u201etu i teraz\u201d jest zbyt ryzykowna, da si\u0119 sporo wycisn\u0105\u0107 z obecnej konfiguracji. Dzia\u0142aj etapami.<\/p>\n<p><strong>Krok 1: wy\u0142\u0105cz nieu\u017cywane funkcje motywu<\/strong><\/p>\n<ul>\n<li>Sprawd\u017a w panelu motywu (cz\u0119sto \u201eTheme Options\u201d, \u201ePerformance\u201d, \u201eOptimization\u201d), czy mo\u017cna wy\u0142\u0105czy\u0107:\n<ul>\n<li>animacje przy przewijaniu,<\/li>\n<li>wbudowane slidery i karuzele,<\/li>\n<li>ikony spo\u0142eczno\u015bciowe, je\u015bli i tak korzystasz z innej wtyczki,<\/li>\n<li>portfolio, events, inne custom post types, kt\u00f3rych nie u\u017cywasz.<\/li>\n<\/ul>\n<\/li>\n<li>Je\u015bli motyw pozwala w\u0142\u0105czy\u0107 <strong>\u0142adowanie skrypt\u00f3w tylko tam, gdzie s\u0105 potrzebne<\/strong>, w\u0142\u0105cz t\u0119 opcj\u0119 (np. slider JS tylko na stronie g\u0142\u00f3wnej).<\/li>\n<\/ul>\n<p><strong>Krok 2: ogranicz nadmiar element\u00f3w buildera na podstronach<\/strong><\/p>\n<p>Cz\u0119sty scenariusz: strona g\u0142\u00f3wna z 10 sekcjami, w ka\u017cdej kilkana\u015bcie element\u00f3w, globalne nag\u0142\u00f3wki\/stopki zbudowane w builderze, modalne pop\u2011upy, sticky bary, czaty. Ka\u017cdy z nich dok\u0142ada CSS i JS.<\/p>\n<ul>\n<li>Zredukuj liczb\u0119 sekcji \u2013 wiele z nich mo\u017cna po\u0142\u0105czy\u0107 lub przerobi\u0107 na prostsze.<\/li>\n<li>Usu\u0144 zb\u0119dne animacje \u201eon scroll\u201d i efekty paralaksy \u2013 obci\u0105\u017caj\u0105 renderowanie i zwi\u0119kszaj\u0105 CLS.<\/li>\n<li>Ogranicz globalne elementy buildera (np. wyskakuj\u0105ce okienka budowane w builderze) do naprawd\u0119 wa\u017cnych.<\/li>\n<\/ul>\n<p><strong>Krok 3: przeno\u015b proste fragmenty z buildera do Gutenberga<\/strong><\/p>\n<p>Dla zwyk\u0142ych wpis\u00f3w blogowych lub prostych stron tre\u015bciowych builder jest zazwyczaj armat\u0105 na much\u0119.<\/p>\n<ul>\n<li>Nowe tekstowe podstrony tw\u00f3rz w <strong>edytorze blokowym<\/strong>, u\u017cywaj\u0105c blok\u00f3w kolumn, nag\u0142\u00f3wk\u00f3w, list, bez ci\u0119\u017ckich widget\u00f3w.<\/li>\n<li>Stare podstrony stopniowo przeno\u015b z buildera do blok\u00f3w \u2013 zacznij od tych najwa\u017cniejszych dla ruchu (najcz\u0119\u015bciej odwiedzane, kluczowe w lejku sprzeda\u017cowym).<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: po ka\u017cdej wi\u0119kszej zmianie zmierz rozmiar HTML, CSS i JS danej podstrony oraz LCP. Cel \u2013 konsekwentne obni\u017canie \u201ewagi\u201d strony bez utraty kluczowych funkcji.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Kiedy_wymienic_motyw_lub_builder\"><\/span>Kiedy wymieni\u0107 motyw lub builder<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Przerabianie skrajnie ci\u0119\u017ckiego motywu bywa dro\u017csze ni\u017c migracja na l\u017cejsze rozwi\u0105zanie. Sygna\u0142y, \u017ce pora na zmian\u0119:<\/p>\n<ul>\n<li>brak opcji wy\u0142\u0105czenia du\u017cych modu\u0142\u00f3w i skrypt\u00f3w,<\/li>\n<li>brak wsparcia dla nowego edytora blokowego i FSE, wszystko \u201emusi\u201d by\u0107 robione w builderze,<\/li>\n<li>ka\u017cda podstrona generuje ogrom HTML (dziesi\u0105tki tysi\u0119cy znak\u00f3w) przez zagnie\u017cd\u017cone sekcje i divy,<\/li>\n<li>po optymalizacjach nadal trudno zej\u015b\u0107 z LCP na mobile poni\u017cej akceptowalnych warto\u015bci.<\/li>\n<\/ul>\n<p>Przy planowaniu zmiany:<\/p>\n<ul>\n<li>Postaw na <strong>lekki motyw startowy<\/strong> (np. motywy zoptymalizowane pod performance, integruj\u0105ce si\u0119 z Gutenbergiem lub lekkim builderem).<\/li>\n<li>Rozdziel projekt na kroki:\n<ul>\n<li>krok 1 \u2013 przeniesienie layoutu nag\u0142\u00f3wka i stopki,<\/li>\n<li>krok 2 \u2013 kluczowe strony sprzeda\u017cowe,<\/li>\n<li>krok 3 \u2013 szablony wpis\u00f3w, kategorie, landing pages.<\/li>\n<\/ul>\n<\/li>\n<li>Tw\u00f3rz <strong>szablony blokowe<\/strong> (patterns) zamiast ka\u017cd\u0105 stron\u0119 budowa\u0107 od zera w builderze.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: na wersji staging por\u00f3wnaj wyniki LCP\/CLS\/INP starego i nowego motywu dla tych samych tre\u015bci oraz sprawd\u017a, czy struktura HTML nie jest nadmiernie rozbudowana.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_motyw_i_builder_wplywaja_na_CLS_i_INP\"><\/span>Jak motyw i builder wp\u0142ywaj\u0105 na CLS i INP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ci\u0119\u017ckie motywy psuj\u0105 nie tylko szybko\u015b\u0107 \u0142adowania, ale te\u017c stabilno\u015b\u0107 wizualn\u0105 i interaktywno\u015b\u0107.<\/p>\n<ul>\n<li><strong>CLS<\/strong> ro\u015bnie, gdy:\n<ul>\n<li>builder wstrzykuje style po za\u0142adowaniu (np. dynamiczne wysoko\u015bci, lazy load bez rezerwacji miejsca),<\/li>\n<li>nag\u0142\u00f3wek\/nawigacja zmienia wysoko\u015b\u0107 po wczytaniu font\u00f3w lub JS,<\/li>\n<li>sekcje \u201ehero\u201d i slidery nie maj\u0105 z g\u00f3ry okre\u015blonej wysoko\u015bci.<\/li>\n<\/ul>\n<\/li>\n<li><strong>INP<\/strong> cierpi, gdy:\n<ul>\n<li>na starcie \u0142aduje si\u0119 du\u017co JS buildera (edytowanie inline, live\u2011preview), mimo \u017ce u\u017cytkownik na froncie tego nie potrzebuje,<\/li>\n<li>ka\u017cda interakcja (rozwini\u0119cie akordeonu, prze\u0142\u0105czenie zak\u0142adki) idzie przez ci\u0119\u017ckie skrypty.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Aby poprawi\u0107 sytuacj\u0119:<\/p>\n<ul>\n<li>W\u0142\u0105cz w builderze opcje typu <strong>\u201eload JS\/CSS on demand\u201d<\/strong>, je\u015bli s\u0105 dost\u0119pne.<\/li>\n<li>Zadbaj o <strong>sta\u0142e wymiary kluczowych element\u00f3w<\/strong> (slidery, obrazy w hero, bannery), ustawiaj\u0105c wysoko\u015b\u0107\/min-height w CSS lub proporcje obraz\u00f3w.<\/li>\n<li>Ogranicz liczb\u0119 interaktywnych bajer\u00f3w \u2013 im mniej JS do obs\u0142ugi animowanych element\u00f3w, tym lepszy INP.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: monitoruj CLS w PageSpeed, sprawdzaj, kt\u00f3re elementy przesuwaj\u0105 layout (panel \u201eLayout Shift Regions\u201d w DevTools), oraz mierz INP po redukcji JS buildera i efekt\u00f3w.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Blad_3_%E2%80%93_Za_duzo_wtyczek_i_konflikty_miedzy_nimi\"><\/span>B\u0142\u0105d 3 \u2013 Za du\u017co wtyczek i konflikty mi\u0119dzy nimi<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jak_wtyczki_zabijaja_wydajnosc\"><\/span>Jak wtyczki zabijaj\u0105 wydajno\u015b\u0107<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Ka\u017cda wtyczka to dodatkowy kod PHP, potencjalne zapytania do bazy, w\u0142asne pliki CSS\/JS i cz\u0119sto zewn\u0119trzne po\u0142\u0105czenia (API, trackery, licencje). Problemy zaczynaj\u0105 si\u0119, gdy:<\/p>\n<ul>\n<li>instalujesz kilka wtyczek robi\u0105cych to samo (np. 3 r\u00f3\u017cne wtyczki formularzy),<\/li>\n<li>\u201ena wszelki wypadek\u201d trzymasz stare wtyczki, kt\u00f3rych ju\u017c nie u\u017cywasz,<\/li>\n<li>du\u017ce pakiety \u201eall\u2011in\u2011one\u201d dorzucaj\u0105 dziesi\u0105tki funkcji, z kt\u00f3rych korzystasz tylko z dw\u00f3ch.<\/li>\n<\/ul>\n<p>Efekt: ro\u015bnie TTFB (wi\u0119cej logiki PHP przed wygenerowaniem strony), a frontend dostaje extra CSS\/JS z r\u00f3\u017cnych \u017ar\u00f3de\u0142. Dodatkowo konflikty mi\u0119dzy wtyczkami potrafi\u0105 blokowa\u0107 cache, generowa\u0107 b\u0142\u0119dy i psu\u0107 Core Web Vitals bez oczywistej przyczyny.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_zdiagnozowac_wplyw_konkretnych_wtyczek\"><\/span>Jak zdiagnozowa\u0107 wp\u0142yw konkretnych wtyczek<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Krok 1: zr\u00f3b <strong>pe\u0142n\u0105 list\u0119 wtyczek<\/strong> i podziel je na kategorie:<\/p>\n<ul>\n<li>krytyczne biznesowo (np. WooCommerce, p\u0142atno\u015bci, LMS),<\/li>\n<li>zwi\u0105zane z wygl\u0105dem (shortcodes, galerie, slidery),<\/li>\n<li>narz\u0119dziowe (SEO, cache, bezpiecze\u0144stwo, backup),<\/li>\n<li>\u201edodatki\u201d (social, pop\u2011upy, czaty, integracje marketingowe).<\/li>\n<\/ul>\n<p>Krok 2: na \u015brodowisku testowym u\u017cyj wtyczek typu <strong>Query Monitor<\/strong>, <strong>Performance Profiler<\/strong> albo zewn\u0119trznych narz\u0119dzi (np. New Relic, je\u015bli hosting pozwala), aby sprawdzi\u0107:<\/p>\n<ul>\n<li>kt\u00f3re wtyczki dodaj\u0105 najwi\u0119cej <strong>czasoch\u0142onnych hook\u00f3w<\/strong>,<\/li>\n<li>kt\u00f3re generuj\u0105 najwi\u0119cej <strong>zapytani\u0144 do bazy<\/strong>,<\/li>\n<li>kt\u00f3re \u0142aduj\u0105 swoje <strong>CSS\/JS na ka\u017cdej podstronie<\/strong>.<\/li>\n<\/ul>\n<p>Krok 3: wykonaj test A\/B na stagingu:<\/p>\n<ul>\n<li>zmierz LCP\/TTFB na stronie kluczowej (np. produkt, oferta),<\/li>\n<li>wy\u0142\u0105cz grup\u0119 \u201edodatk\u00f3w\u201d i ponownie zmierz,<\/li>\n<li>je\u015bli r\u00f3\u017cnica jest istotna \u2013 w\u0119\u017cszy kr\u0105g podejrzanych masz gotowy, potem wy\u0142\u0105czaj pojedynczo.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: zanotuj, kt\u00f3re wtyczki maj\u0105 najwi\u0119kszy udzia\u0142 w czasie generowania strony i ile CSS\/JS dorzucaj\u0105, oraz por\u00f3wnaj wyniki CWV przed i po ich wy\u0142\u0105czeniu.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Jak_bezpiecznie_odchudzic_zestaw_wtyczek\"><\/span>Jak bezpiecznie odchudzi\u0107 zestaw wtyczek<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Usuwanie wtyczek na produkcji \u201ena \u017cywca\u201d ko\u0144czy si\u0119 czasem niedzia\u0142aj\u0105cym koszykiem, utrat\u0105 formularzy lub b\u0142\u0119dami 500. Potrzebny jest plan.<\/p>\n<p><strong>Krok 1: identyfikacja kandydat\u00f3w do usuni\u0119cia<\/strong><\/p>\n<ul>\n<li>Wtyczki nieaktywne \u2013 w wi\u0119kszo\u015bci przypadk\u00f3w mo\u017cna je po prostu usun\u0105\u0107 (zostaw jedynie te, kt\u00f3rych realnie u\u017cywasz okazjonalnie i rozumiesz konsekwencje).<\/li>\n<li>Duplikaty funkcji \u2013 je\u015bli masz dwie wtyczki cache, jedn\u0105 do minifikacji i trzy od pop\u2011up\u00f3w, zdecyduj si\u0119 na jeden, dobrze skonfigurowany zestaw.<\/li>\n<li>\u201eBajery\u201d \u2013 suwak opinii, animowane liczniki, plugin do prostego efektu, kt\u00f3ry mo\u017cna odtworzy\u0107 jednym blokiem CSS\/JS.<\/li>\n<\/ul>\n<p><strong>Krok 2: migracja funkcji z ci\u0119\u017ckich wtyczek do l\u017cejszych rozwi\u0105za\u0144<\/strong><\/p>\n<ul>\n<li>Formularze \u2013 zamiast wielkiego buildera formularzy do prostego kontaktu, wykorzystaj l\u017cejsz\u0105 wtyczk\u0119 lub natywne bloki.<\/li>\n<li>Social share \u2013 l\u017cejsze przyciski udost\u0119pniania (bez \u015bledz\u0105cych skrypt\u00f3w JS) zamiast rozbudowanych widget\u00f3w.<\/li>\n<li>Pop\u2011upy \u2013 je\u015bli to mo\u017cliwe, korzystaj z rozwi\u0105za\u0144 wbudowanych w motyw lub builder, zamiast kolejnej wtyczki.<\/li>\n<\/ul>\n<p><strong>Krok 3: test po ka\u017cdym usuni\u0119ciu<\/strong><\/p>\n<ul>\n<li>Usu\u0144 jedn\u0105 wtyczk\u0119 lub ma\u0142\u0105 grup\u0119,<\/li>\n<li>przetestuj:\n<ul>\n<li>kluczowe funkcje (logowanie, zam\u00f3wienia, formularze),<\/li>\n<li>console w DevTools pod k\u0105tem b\u0142\u0119d\u00f3w JS,<\/li>\n<li>wyniki PageSpeed dla g\u0142\u00f3wnych podstron.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: po redukcji wtyczek por\u00f3wnaj liczb\u0119 zapyta\u0144, TTFB oraz INP. Dobrze przeprowadzona \u201edieta\u201d wtyczkowa potrafi poprawi\u0107 zar\u00f3wno backend, jak i frontend.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Konflikty_wtyczek_a_cache_i_Core_Web_Vitals\"><\/span>Konflikty wtyczek a cache i Core Web Vitals<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Dwie wtyczki cache, trzy od optymalizacji obraz\u00f3w, plus skrypt do minifikacji JS zewn\u0119trznie \u2013 typowy przepis na problemy. Objawy:<\/p>\n<ul>\n<li>strona raz jest superszybka, a raz \u0142aduje si\u0119 w \u201ego\u0142ej\u201d wersji (bez styl\u00f3w),<\/li>\n<\/ul>\n<ul>\n<li>czasem widzisz zcache\u2019owan\u0105 wersj\u0119, a czasem \u015bwie\u017c\u0105, przez co wyniki CWV \u201eskacz\u0105\u201d mi\u0119dzy kolejnymi pomiarami,<\/li>\n<li>minifikacja JS\/CSS powoduje b\u0142\u0119dy w konsoli i rozjechany layout,<\/li>\n<li>logi serwera pokazuj\u0105 losowe b\u0142\u0119dy 500 lub 503, szczeg\u00f3lnie przy wi\u0119kszym ruchu.<\/li>\n<\/ul>\n<p>\u017beby to ogarn\u0105\u0107, zacznij od uproszczenia stosu.<\/p>\n<p><strong>Krok 1: zostaw jeden silnik cache<\/strong><\/p>\n<ul>\n<li>Wy\u0142\u0105cz wszystkie wtyczki cache i optymalizacji frontendu.<\/li>\n<li>W\u0142\u0105cz <strong>jedn\u0105<\/strong> wtyczk\u0119 cache (najlepiej t\u0119 rekomendowan\u0105 przez hosting lub tak\u0105, kt\u00f3ra dobrze wsp\u00f3\u0142pracuje z serwerowym cache).<\/li>\n<li>Skorzystaj z wbudowanych funkcji:\n<ul>\n<li>cache strony (full page),<\/li>\n<li>cache przegl\u0105darki (nag\u0142\u00f3wki expire\/cache-control),<\/li>\n<li>opcjonalnie: minifikacja i \u0142\u0105czenie plik\u00f3w \u2013 ale na pocz\u0105tek bez agresywnych opcji \u201ecombine everything\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 2: wy\u0142\u0105cz duplikaty funkcji<\/strong><\/p>\n<p>Je\u015bli jedna wtyczka robi lazy load, druga minifikuje JS, a trzecia wstrzykuje w\u0142asny CDN, bardzo \u0142atwo o konflikt. Wybierz narz\u0119dzie nadrz\u0119dne i reszt\u0119 funkcji wy\u0142\u0105cz w innych wtyczkach. Przyk\u0142ad: gdy korzystasz z wtyczki cache z modu\u0142em optymalizacji obraz\u00f3w, nie potrzebujesz drugiej, kt\u00f3ra robi to samo, chyba \u017ce masz jasno zaplanowany podzia\u0142 r\u00f3l.<\/p>\n<p><strong>Krok 3: testuj kombinacje ustawie\u0144 na stagingu<\/strong><\/p>\n<p>Agresywna minifikacja i op\u00f3\u017anianie JS potrafi\u0105 poprawi\u0107 wyniki w syntetycznych testach, ale zepsu\u0107 realne do\u015bwiadczenie u\u017cytkownika (np. op\u00f3\u017anione pojawianie si\u0119 koszyka, brak walidacji formularza). Dlatego:<\/p>\n<ul>\n<li>na kopii strony testuj kolejno:\n<ul>\n<li>sam cache strony,<\/li>\n<li>cache + minifikacja CSS,<\/li>\n<li>cache + minifikacja CSS\/JS + op\u00f3\u017anianie skrypt\u00f3w (defer\/delay),<\/li>\n<\/ul>\n<\/li>\n<li>po ka\u017cdym kroku:\n<ul>\n<li>przejd\u017a ca\u0142y podstawowy lejek (wej\u015bcie &gt; produkt\/oferta &gt; formularz\/kasa),<\/li>\n<li>sprawd\u017a konsol\u0119 w DevTools,<\/li>\n<li>uruchom test w PageSpeed i por\u00f3wnaj LCP\/INP.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 4: skonfiguruj wyj\u0105tki<\/strong><\/p>\n<p>Niekt\u00f3re skrypty nie lubi\u0105 by\u0107 op\u00f3\u017aniane lub \u0142\u0105czone (np. bramki p\u0142atno\u015bci, reCAPTCHA, chaty na \u017cywo). Gdy widzisz, \u017ce po w\u0142\u0105czeniu op\u00f3\u017aniania JS pojawiaj\u0105 si\u0119 b\u0142\u0119dy lub co\u015b \u201eprzestaje klika\u0107\u201d, dodaj te skrypty do wyj\u0105tk\u00f3w w ustawieniach cache\/minifikacji. Zazwyczaj wystarczy wykluczy\u0107 konkretne pliki JS lub ca\u0142e \u015bcie\u017cki URL (np. strony \u201e\/checkout\/\u201d czy \u201e\/konto\/\u201d).<\/p>\n<p>Co sprawdzi\u0107: zweryfikuj, czy na stronie dzia\u0142a tylko jeden system cache (wtyczka + ewentualnie serwerowy), a funkcje takie jak lazy load, minifikacja i CDN nie dubluj\u0105 si\u0119. Po ka\u017cdej zmianie wykonaj seri\u0119 test\u00f3w CWV i r\u0119cznie przejd\u017a newralgiczne podstrony, obserwuj\u0105c logi b\u0142\u0119d\u00f3w i konsol\u0119.<\/p>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/zblizenie-na-stara-maszyne-do-pisania-z-kartka-z-napisem-wor-pexels-4152505.jpg\" alt=\"Zbli\u017cenie na star\u0105 maszyn\u0119 do pisania z kartk\u0105 z napisem WordPress\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: Markus Winkler<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Blad_4_%E2%80%93_Nieprawidlowa_lub_brakujaca_konfiguracja_cache_strona_obiekty_przegladarka\"><\/span>B\u0142\u0105d 4 \u2013 Nieprawid\u0142owa lub brakuj\u0105ca konfiguracja cache (strona, obiekty, przegl\u0105darka)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jak_dziala_cache_w_WordPressie_i_gdzie_zwykle_jest_psuty\"><\/span>Jak dzia\u0142a cache w WordPressie i gdzie zwykle jest psuty<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Cache w WordPressie dzia\u0142a na kilku poziomach, a problemy zaczynaj\u0105 si\u0119 wtedy, gdy ka\u017cdy poziom robi co\u015b \u201epo swojemu\u201d albo w og\u00f3le nie jest skonfigurowany. Typowy scenariusz: hosting ma w\u0142asny cache, wtyczka cache dorzuca kolejn\u0105 warstw\u0119, a przegl\u0105darka u\u017cytkownika za ka\u017cdym razem \u015bci\u0105ga wszystkie pliki od zera.<\/p>\n<p>Trzy g\u0142\u00f3wne warstwy, na kt\u00f3re trzeba spojrze\u0107:<\/p>\n<ul>\n<li><strong>cache strony (full page cache)<\/strong> \u2013 przechowuje gotowy HTML, ogranicza wykonywanie PHP i zapyta\u0144 do bazy,<\/li>\n<li><strong>cache obiekt\u00f3w<\/strong> \u2013 zapami\u0119tuje wyniki powtarzaj\u0105cych si\u0119 zapyta\u0144 do bazy,<\/li>\n<li><strong>cache przegl\u0105darki<\/strong> \u2013 m\u00f3wi, jak d\u0142ugo u\u017cytkownik mo\u017ce trzyma\u0107 CSS\/JS\/obrazy \u201eu siebie\u201d, zamiast pobiera\u0107 je na nowo.<\/li>\n<\/ul>\n<p>Bez sp\u00f3jnej konfiguracji TTFB ro\u015bnie, serwer robi w k\u00f3\u0142ko t\u0119 sam\u0105 prac\u0119, a LCP i INP cierpi\u0105, bo przegl\u0105darka musi \u201eprzemieli\u0107\u201d du\u017co kodu przy ka\u017cdym wej\u015bciu na stron\u0119.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cache_strony_full_page_%E2%80%93_fundament_szybkiego_WordPressa\"><\/span>Cache strony (full page) \u2013 fundament szybkiego WordPressa<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Cache strony to najprostszy spos\u00f3b na obni\u017cenie TTFB. Zamiast za ka\u017cdym razem uruchamia\u0107 PHP, WordPress generuje HTML raz i potem serwuje go z cache. Brak cache strony przy ruchu produkcyjnym to jeden z najci\u0119\u017cszych b\u0142\u0119d\u00f3w wydajno\u015bciowych.<\/p>\n<p><strong>Krok 1: sprawd\u017a, czy cache strony w og\u00f3le dzia\u0142a<\/strong><\/p>\n<ul>\n<li>W\u0142\u0105cz tryb incognito i odpal t\u0119 sam\u0105 podstron\u0119 2\u20133 razy w PageSpeed.<\/li>\n<li>Por\u00f3wnaj TTFB \u2013 przy dzia\u0142aj\u0105cym cache r\u00f3\u017cnica mi\u0119dzy pierwszym a kolejnymi testami jest wyra\u017ana (TTFB spada).<\/li>\n<li>Sprawd\u017a nag\u0142\u00f3wki odpowiedzi w DevTools (zak\u0142adka \u201eNetwork &gt; Headers\u201d). Szukaj informacji typu:\n<ul>\n<li><code>cache-control<\/code> z rozs\u0105dnym <code>max-age<\/code>,<\/li>\n<li>nag\u0142\u00f3wk\u00f3w wtyczki cache (np. <code>x-cache<\/code>, <code>x-litespeed-cache<\/code>, <code>x-wp-cf-super-cache<\/code>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 2: skonfiguruj cache strony w jednej warstwie<\/strong><\/p>\n<p>Je\u015bli hosting udost\u0119pnia sw\u00f3j system cache (np. LiteSpeed, NGINX cache, Varnish), zacznij od jego rekomendowanej wtyczki. Zasada jest prosta: <strong>jeden system g\u0142\u00f3wny, reszta wy\u0142\u0105czona<\/strong>.<\/p>\n<ul>\n<li>Ustaw czas \u017cycia cache dla stron statycznych (home, blog, landing) \u2013 np. od kilkunastu minut do kilku godzin, zale\u017cnie od tego, jak cz\u0119sto zmieniasz tre\u015bci.<\/li>\n<li>Skonfiguruj automatyczne czyszczenie cache:\n<ul>\n<li>po publikacji\/aktualizacji wpisu,<\/li>\n<li>przy zmianie menu, widget\u00f3w, kluczowych ustawie\u0144 motywu.<\/li>\n<\/ul>\n<\/li>\n<li>Wyklucz z cache:\n<ul>\n<li>strony typu: koszyk, kasa, logowanie, konto,<\/li>\n<li>panelem klienta, panele subskrypcji, generatory tre\u015bci personalizowanych.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 3: unikaj p\u0119tli \u201ecache &gt; brak cache\u201d<\/strong><\/p>\n<p>Cz\u0119sty b\u0142\u0105d: wtyczka cache czy\u015bci ca\u0142y cache po ka\u017cdej ma\u0142ej zmianie (np. dodanie produktu), przez co przy wi\u0119kszym sklepie serwer prawie zawsze generuje stron\u0119 od nowa. Skutek \u2013 niestabilne TTFB i \u201elosowe\u201d wyniki CWV.<\/p>\n<ul>\n<li>W ustawieniach wtyczki zamiast \u201eczy\u015b\u0107 wszystko\u201d ustaw <strong>czyszczenie selektywne<\/strong> (np. tylko powi\u0105zanych wpis\u00f3w\/kategorii).<\/li>\n<li>Przy du\u017cych aktualizacjach (import produkt\u00f3w) korzystaj z opcji:\n<ul>\n<li>tymczasowego wy\u0142\u0105czenia automatycznego purge,<\/li>\n<li>r\u0119cznego przebudowania cache po zako\u0144czeniu importu (preload).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: sprawd\u017a sta\u0142o\u015b\u0107 TTFB w kilku kolejnych testach, nag\u0142\u00f3wki cache w DevTools oraz to, czy strony dynamiczne (kasa, konto) na pewno <strong>nie<\/strong> s\u0105 cache\u2019owane.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cache_obiektow_%E2%80%93_kiedy_faktycznie_ma_sens\"><\/span>Cache obiekt\u00f3w \u2013 kiedy faktycznie ma sens<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Cache obiekt\u00f3w (np. Redis, Memcached) pomaga przy rozbudowanych stronach: sklepy, LMS, portale z du\u017c\u0105 liczb\u0105 zapyta\u0144 do bazy. Na prostym blogu mo\u017ce niewiele zmieni\u0107, a przy z\u0142ej konfiguracji nawet zaszkodzi\u0107.<\/p>\n<p><strong>Krok 1: oce\u0144, czy naprawd\u0119 go potrzebujesz<\/strong><\/p>\n<ul>\n<li>U\u017cyj Query Monitora na stronie o najwy\u017cszym obci\u0105\u017ceniu (np. kategoria sklepu).<\/li>\n<li>Sprawd\u017a:\n<ul>\n<li>liczb\u0119 zapyta\u0144 SQL,<\/li>\n<li>czas sumaryczny zapyta\u0144,<\/li>\n<li>powtarzaj\u0105ce si\u0119 (identyczne) zapytania w ramach jednego requestu.<\/li>\n<\/ul>\n<\/li>\n<li>Je\u015bli zapyta\u0144 jest ma\u0142o i s\u0105 szybkie, inwestycja w Redis\/Memcached raczej niewiele wniesie.<\/li>\n<\/ul>\n<p><strong>Krok 2: skonfiguruj jeden, stabilny backend cache obiekt\u00f3w<\/strong><\/p>\n<ul>\n<li>Sprawd\u017a w panelu hostingu, czy jest dost\u0119pny Redis\/Memcached i jaka jest zalecana wersja wtyczki.<\/li>\n<li>Zainstaluj jedn\u0105 wtyczk\u0119 do cache obiekt\u00f3w (np. oficjaln\u0105 od hostingu lub popularnego rozwi\u0105zania) i:\n<ul>\n<li>w\u0142\u0105cz globalny cache obiekt\u00f3w,<\/li>\n<li>zadbaj o solidny prefiks (gdy na tym samym Redisie pracuje kilka stron).<\/li>\n<\/ul>\n<\/li>\n<li>Wy\u0142\u0105cz inne wtyczki \u201epseudo-performance\u201d, kt\u00f3re pr\u00f3buj\u0105 robi\u0107 w\u0142asny cache obiekt\u00f3w w plikach.<\/li>\n<\/ul>\n<p><strong>Krok 3: kontroluj rozmiar i czyszczenie cache obiekt\u00f3w<\/strong><\/p>\n<p>Przepe\u0142niony lub \u017ale czyszczony Redis potrafi spowodowa\u0107 spadki wydajno\u015bci przy du\u017cym ruchu.<\/p>\n<ul>\n<li>W panelu hostingu lub narz\u0119dziu CLI sprawdzaj:\n<ul>\n<li>rozmiar u\u017cywanej pami\u0119ci przez Redis,<\/li>\n<li>liczb\u0119 kluczy,<\/li>\n<li>ewentualne b\u0142\u0119dy \u201eevicted keys\u201d.<\/li>\n<\/ul>\n<\/li>\n<li>Ustaw sensown\u0105 polityk\u0119 wygasania (TTL) \u2013 nie wszystko musi siedzie\u0107 w cache \u201ena zawsze\u201d.<\/li>\n<li>Po wi\u0119kszych zmianach struktury (migracje, przebudowa taksonomii) wykonaj pe\u0142ne czyszczenie cache obiekt\u00f3w.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: por\u00f3wnaj czas generowania strony w Query Monitor przed i po w\u0142\u0105czeniu cache obiekt\u00f3w, liczb\u0119 i czas zapyta\u0144 SQL oraz wp\u0142yw na TTFB w PageSpeed.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Cache_przegladarki_%E2%80%93_darmowe_przyspieszenie_ktore_czesto_jest_ignorowane\"><\/span>Cache przegl\u0105darki \u2013 darmowe przyspieszenie, kt\u00f3re cz\u0119sto jest ignorowane<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Je\u015bli zasoby statyczne (CSS, JS, fonty, obrazy) nie maj\u0105 ustawionych nag\u0142\u00f3wk\u00f3w cache, przegl\u0105darka u\u017cytkownika przy ka\u017cdym wej\u015bciu pobiera ca\u0142o\u015b\u0107 od zera. Dla powracaj\u0105cych u\u017cytkownik\u00f3w to marnowanie potencja\u0142u, a dla Core Web Vitals \u2013 zb\u0119dne doci\u0105\u017cenie sieci.<\/p>\n<p><strong>Krok 1: sprawd\u017a nag\u0142\u00f3wki dla statycznych plik\u00f3w<\/strong><\/p>\n<ul>\n<li>W DevTools, w zak\u0142adce \u201eNetwork\u201d, wybierz dowolny obraz, plik CSS lub JS.<\/li>\n<li>W \u201eHeaders\u201d poszukaj:\n<ul>\n<li><code>cache-control<\/code> z <code>max-age<\/code> wi\u0119kszym ni\u017c 0,<\/li>\n<li>opcjonalnie <code>expires<\/code> z dat\u0105 w przysz\u0142o\u015bci.<\/li>\n<\/ul>\n<\/li>\n<li>Je\u015bli widzisz <code>no-cache<\/code>, <code>no-store<\/code> albo bardzo niski <code>max-age<\/code>, to sygna\u0142, \u017ce konfiguracja jest s\u0142aba.<\/li>\n<\/ul>\n<p><strong>Krok 2: ustaw d\u0142ugie cache dla zasob\u00f3w wersjonowanych<\/strong><\/p>\n<p>Wi\u0119kszo\u015b\u0107 plik\u00f3w CSS\/JS WordPressa i wtyczek ma dopi\u0119ty parametr wersji (np. <code>style.css?ver=6.4.1<\/code>). To pozwala bezpiecznie stosowa\u0107 d\u0142ugie czasy \u017cycia cache.<\/p>\n<ul>\n<li>W panelu hostingu lub w konfiguracji serwera (NGINX\/Apache) ustaw:\n<ul>\n<li>d\u0142ugi <code>max-age<\/code> (np. od 1 miesi\u0105ca w g\u00f3r\u0119) dla <code>.css<\/code>, <code>.js<\/code>, <code>.jpg<\/code>, <code>.png<\/code>, <code>.webp<\/code>, <code>.svg<\/code>, <code>.woff2<\/code> itp.,<\/li>\n<li><code>immutable<\/code> przy zasobach wersjonowanych, je\u015bli serwer na to pozwala.<\/li>\n<\/ul>\n<\/li>\n<li>Je\u015bli nie masz dost\u0119pu do serwera, u\u017cyj wtyczki cache, kt\u00f3ra potrafi ustawi\u0107 nag\u0142\u00f3wki przegl\u0105darki.<\/li>\n<\/ul>\n<p><strong>Krok 3: pilnuj wersjonowania i bustingu cache<\/strong><\/p>\n<p>D\u0142ugi cache wymaga konsekwentnego zmieniania wersji plik\u00f3w, gdy co\u015b aktualizujesz. Inaczej u\u017cytkownikom potrafi zosta\u0107 stara wersja CSS\/JS.<\/p>\n<ul>\n<li>Unikaj r\u0119cznego usuwania parametr\u00f3w <code>?ver=<\/code> z plik\u00f3w CSS\/JS, je\u015bli nie masz w zamian systemu bustingu (np. nazwy plik\u00f3w z hashami).<\/li>\n<li>Je\u017celi budujesz w\u0142asne skrypty\/arkusze, zadbaj, by przy ka\u017cdej zmianie zmienia\u0142 si\u0119:\n<ul>\n<li>parametr wersji, albo<\/li>\n<li>nazwa pliku (np. <code>app.1234.css<\/code> \u2192 <code>app.5678.css<\/code>).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: po konfiguracji nag\u0142\u00f3wk\u00f3w jeszcze raz przeanalizuj zasoby w DevTools, a w PageSpeed sp\u00f3jrz na sekcj\u0119 \u201eWykorzystaj pami\u0119\u0107 podr\u0119czn\u0105 przegl\u0105darki\u201d oraz wp\u0142yw na LCP przy ponownych odwiedzinach.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Typowe_bledy_w_konfiguracji_cache_ktore_psuja_Core_Web_Vitals\"><\/span>Typowe b\u0142\u0119dy w konfiguracji cache, kt\u00f3re psuj\u0105 Core Web Vitals<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Na koniec tej sekcji warto zebra\u0107 powtarzaj\u0105ce si\u0119 b\u0142\u0119dy, kt\u00f3re szczeg\u00f3lnie mocno uderzaj\u0105 w CWV:<\/p>\n<ul>\n<li><strong>Cache w\u0142\u0105czony tylko dla zalogowanych administrator\u00f3w<\/strong> \u2013 w panelu wtyczki zaznaczone \u201ecache dla zalogowanych\u201d, a dla go\u015bci nic si\u0119 nie dzieje. Efekt: testy robione na zalogowanym koncie pokazuj\u0105 bajeczny TTFB, ale realni u\u017cytkownicy dostaj\u0105 \u201ego\u0142y\u201d WordPress.<\/li>\n<li><strong>Sta\u0142e czyszczenie cache przez inne wtyczki<\/strong> \u2013 np. wtyczka bezpiecze\u0144stwa skanuje pliki i odpala hooki, kt\u00f3re z kolei czyszcz\u0105 cache. Serwer nie ma kiedy go zape\u0142ni\u0107, wi\u0119c wi\u0119kszo\u015b\u0107 wej\u015b\u0107 idzie \u201ena \u017cywo\u201d.<\/li>\n<li><strong>Cache dla stron dynamicznych<\/strong> \u2013 koszyk, checkout, panel u\u017cytkownika l\u0105duj\u0105 w cache i odwiedzaj\u0105cy widz\u0105 cudze dane albo nie mog\u0105 przej\u015b\u0107 procesu zakupu. W odpowiedzi admin \u201ena szybko\u201d wy\u0142\u0105cza cache wsz\u0119dzie.<\/li>\n<li><strong>Brak sp\u00f3jno\u015bci z CDN<\/strong> \u2013 CDN ustawia swoje nag\u0142\u00f3wki cache, serwer swoje, wtyczka cache dorzuca jeszcze co\u015b od siebie. W rezultacie przy ka\u017cdym od\u015bwie\u017ceniu inne warstwy podaj\u0105 r\u00f3\u017cne wersje plik\u00f3w lub HTML.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: przetestuj stron\u0119 w trybie go\u015bcia (bez logowania), najlepiej w innym browserze lub w trybie prywatnym. Zwr\u00f3\u0107 uwag\u0119 na:<\/p>\n<ul>\n<li>sta\u0142o\u015b\u0107 TTFB przy kolejnych wej\u015bciach,<\/li>\n<li>komunikaty w nag\u0142\u00f3wkach i konsoli (np. b\u0142\u0119dy 304\/412, problemy z CDN),<\/li>\n<li>poprawno\u015b\u0107 dzia\u0142ania newralgicznych stron (koszyk, logowanie, formularze z danymi).<\/li>\n<\/ul>\n<h2><span class=\"ez-toc-section\" id=\"Blad_5_%E2%80%93_Nieoptymalne_obrazy_i_media_formaty_rozmiary_lazy_load\"><\/span>B\u0142\u0105d 5 \u2013 Nieoptymalne obrazy i media (formaty, rozmiary, lazy load)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Dlaczego_obrazy_potrafia_%E2%80%9Ezjesc%E2%80%9D_LCP\"><\/span>Dlaczego obrazy potrafi\u0105 \u201ezje\u015b\u0107\u201d LCP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Najci\u0119\u017cszym elementem wi\u0119kszo\u015bci stron WordPress s\u0105 obrazy: hero, banery, zdj\u0119cia produkt\u00f3w, galerie. Gdy pierwszy widoczny obraz jest za du\u017cy, w z\u0142ym formacie lub wczytywany bez sensownego lazy load, LCP od razu cierpi. Dodatkowo \u017ale dobrane wymiary powoduj\u0105 skoki uk\u0142adu (CLS), a nieprzemy\u015blane wtyczki do optymalizacji obraz\u00f3w generuj\u0105 nadmiar plik\u00f3w i obci\u0105\u017caj\u0105 serwer.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Krok_po_kroku_porzadek_w_obrazach_dla_LCP\"><\/span>Krok po kroku: porz\u0105dek w obrazach dla LCP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Krok 1: zidentyfikuj kluczowe obrazy LCP<\/strong><\/p>\n<ul>\n<li>W PageSpeed, w szczeg\u00f3\u0142ach raportu, sprawd\u017a, kt\u00f3ry element odpowiada za LCP na:\n<ul>\n<li>stronie g\u0142\u00f3wnej,<\/li>\n<li>typowej stronie produktowej\/ofertowej,<\/li>\n<li>kluczowym landing page.<\/li>\n<\/ul>\n<\/li>\n<li>Zwr\u00f3\u0107 uwag\u0119, czy LCP to:\n<ul>\n<li>hero image (du\u017ce zdj\u0119cie na g\u00f3rze),<\/li>\n<li>slider,<\/li>\n<li>blok t\u0142a sekcji (background-image).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 2: dopasuj rozmiary i proporcje<\/strong><\/p>\n<ul>\n<li>Dla ka\u017cdego typu kluczowego obrazu ustal docelow\u0105 szeroko\u015b\u0107 (np. hero dla desktopu ~1920 px, dla mobilnego ~800\u20131080 px).<\/li>\n<li>U\u017cyj funkcji WordPressa <code>add_image_size()<\/code> lub ustawie\u0144 motywu\/buildera, aby generowa\u0107 <strong>konkretny rozmiar<\/strong> pod hero\/produkt, zamiast \u0142adowa\u0107 orygina\u0142 4000 px.<\/li>\n<li>Na frontcie wykorzystaj <code>srcset<\/code> i <code>sizes<\/code>, tak aby przegl\u0105darka mog\u0142a dobra\u0107 odpowiedni rozmiar do ekranu. Wi\u0119kszo\u015b\u0107 nowoczesnych motyw\u00f3w\/builder\u00f3w obs\u0142uguje to automatycznie \u2013 trzeba tylko wybra\u0107 poprawny \u201eimage size\u201d w ustawieniach sekcji.<\/li>\n<\/ul>\n<p><strong>Krok 3: formatuj obrazy z g\u0142ow\u0105 (WebP\/AVIF, ale nie wsz\u0119dzie)<\/strong><\/p>\n<p>Formaty nowej generacji potrafi\u0105 mocno odci\u0105\u017cy\u0107 LCP, ale trzeba je wdra\u017ca\u0107 \u015bwiadomie.<\/p>\n<ul>\n<li>Krok 1: ustaw automatyczn\u0105 kompresj\u0119 i konwersj\u0119 do WebP (lub AVIF) przy uploadzie \u2013 zr\u00f3b to we wtyczce, kt\u00f3ra:\n<ul>\n<li>nie generuje po 10 wariant\u00f3w ka\u017cdego pliku bez kontroli,<\/li>\n<li>pozwala ograniczy\u0107 liczb\u0119 rozmiar\u00f3w i maksymalny wymiar (np. 2560 px szeroko\u015bci).<\/li>\n<\/ul>\n<\/li>\n<li>Krok 2: zostaw JPEG\/PNG jako fallback tam, gdzie WebP mo\u017ce by\u0107 problematyczne (stare maile, PDF-y osadzaj\u0105ce obrazy, bardzo specyficzne przegl\u0105darki biznesowe).<\/li>\n<li>Krok 3: testowo por\u00f3wnaj wag\u0119 przyk\u0142adowej strony produktowej przed i po wdro\u017ceniu WebP \u2013 r\u00f3\u017cnica powinna by\u0107 widoczna ju\u017c w \u201eNetwork\u201d w DevTools.<\/li>\n<\/ul>\n<p>Unikaj konwersji grafik wektorowych (logo, proste ikony) do WebP, je\u015bli masz orygina\u0142 w SVG \u2013 lepiej poda\u0107 czysty SVG ni\u017c bitmap\u0119 udaj\u0105c\u0105 wektor.<\/p>\n<p><strong>Krok 4: konfiguruj lazy load z my\u015bl\u0105 o LCP<\/strong><\/p>\n<p>Domy\u015blne lazy load WordPressa potrafi by\u0107 zbyt agresywne i \u201eop\u00f3\u017ani\u0107\u201d te\u017c obraz LCP. Trzeba jasno okre\u015bli\u0107, kt\u00f3re obrazy maj\u0105 \u0142adowa\u0107 si\u0119 od razu, a kt\u00f3re p\u00f3\u017aniej.<\/p>\n<ul>\n<li>Dla kluczowego obrazu LCP (np. hero, g\u0142\u00f3wne zdj\u0119cie produktu):\n<ul>\n<li>usu\u0144 atrybut <code>loading=\"lazy\"<\/code>, je\u015bli jest dodawany automatycznie,<\/li>\n<li>dodaj <code>fetchpriority=\"high\"<\/code> oraz <code>decoding=\"async\"<\/code> tam, gdzie to ma sens.<\/li>\n<\/ul>\n<\/li>\n<li>Dla pozosta\u0142ych obraz\u00f3w \u201eni\u017cej\u201d na stronie zostaw <code>loading=\"lazy\"<\/code>, ewentualnie u\u017cyj wtyczki, kt\u00f3ra pozwala:\n<ul>\n<li>wykluczy\u0107 kilka pierwszych obraz\u00f3w nad lini\u0105 za\u0142amania,<\/li>\n<li>ustawi\u0107 \u201ethreshold\u201d (preload nieco przed pojawieniem si\u0119 w viewport).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Na stronach z wieloma miniaturami (blog, listing produkt\u00f3w) do\u0142\u00f3\u017c placeholdery (np. t\u0142o w kolorze zbli\u017conym do zdj\u0119cia), \u017ceby zminimalizowa\u0107 skakanie layoutu przy do\u0142adowywaniu miniaturek.<\/p>\n<p><strong>Krok 5: porz\u0105dek w bibliotece medi\u00f3w i wtyczkach do obraz\u00f3w<\/strong><\/p>\n<p>Ba\u0142agan w mediach m\u015bci si\u0119 przy backupach, migracjach i indeksowaniu CWV. Jedna wtyczka do optymalizacji zwykle wystarczy, reszta generuje konflikty i dubluje rozmiary.<\/p>\n<ul>\n<li>Przejrzyj list\u0119 wtyczek:\n<ul>\n<li>zostaw jedn\u0105 odpowiedzialn\u0105 za optymalizacj\u0119 (kompresja, WebP, ewentualny CDN obraz\u00f3w),<\/li>\n<li>wy\u0142\u0105cz i odinstaluj reszt\u0119, wcze\u015bniej sprawdzaj\u0105c, czy nie zostawia po sobie dziesi\u0105tek dodatkowych folder\u00f3w.<\/li>\n<\/ul>\n<\/li>\n<li>W ustawieniach medi\u00f3w ogranicz liczb\u0119 generowanych rozmiar\u00f3w:\n<ul>\n<li>wy\u0142\u0105cz te, kt\u00f3rych nie u\u017cywa motyw lub builder,<\/li>\n<li>ustaw maksymaln\u0105 szeroko\u015b\u0107\/wysoko\u015b\u0107 uploadowanych obraz\u00f3w \u2013 orygina\u0142y z aparatu nie musz\u0105 l\u0105dowa\u0107 w pe\u0142nej rozdzielczo\u015bci.<\/li>\n<\/ul>\n<\/li>\n<li>Przy okazji wi\u0119kszego porz\u0105dkowania zr\u00f3b eksport listy za\u0142\u0105cznik\u00f3w (np. przez WP-CLI) i usu\u0144 pliki, kt\u00f3re nie s\u0105 ju\u017c nigdzie u\u017cywane.<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: w PageSpeed zweryfikuj sekcj\u0119 \u201eServe images in next-gen formats\u201d i \u201eProperly size images\u201d, a w DevTools por\u00f3wnaj wag\u0119 i liczb\u0119 \u017c\u0105da\u0144 obraz\u00f3w przed i po wprowadzeniu zmian. Dla kilku newralgicznych podstron przetestuj zmiany r\u00f3wnie\u017c w s\u0142abszej sieci (np. symulacja 3G), obserwuj\u0105c realne czasy wczytywania kluczowych zdj\u0119\u0107.<\/p>\n<p>Przy wi\u0119kszych bibliotekach z dziesi\u0105tkami tysi\u0119cy zdj\u0119\u0107 zr\u00f3b porz\u0105dkowanie etapami: krok 1 \u2013 wy\u0142\u0105cz zb\u0119dne rozmiary i nieu\u017cywane wtyczki, krok 2 \u2013 wygeneruj miniatury od nowa (np. poprzez <code>wp media regenerate<\/code>), krok 3 \u2013 posprz\u0105taj stare, osierocone pliki. Po ka\u017cdej wi\u0119kszej operacji przetestuj kilka kluczowych podstron, czy nie brakuje obraz\u00f3w i czy linki prowadz\u0105 do aktualnych, zoptymalizowanych wersji.<\/p>\n<p>W projektach e\u2011commerce pomocne bywa osobne potraktowanie zdj\u0119\u0107 produktowych i lifestyle\u2019owych: pierwsze trzymane w umiarkowanej rozdzielczo\u015bci na bia\u0142ym tle, drugie mocniej kompresowane i cz\u0119sto serwowane z CDN. Taki podzia\u0142 pozwala skr\u00f3ci\u0107 LCP na listingach i jednocze\u015bnie nie psu\u0107 jako\u015bci kluczowych uj\u0119\u0107 w galerii produktu. Kluczem jest sp\u00f3jna strategia: wiesz, kt\u00f3re obrazy s\u0105 krytyczne dla konwersji, a kt\u00f3re s\u0105 jedynie \u201eozdobnikami\u201d i mog\u0105 by\u0107 bardziej agresywnie kompresowane.<\/p>\n<p>Co sprawdzi\u0107: czy obraz LCP nie jest obj\u0119ty lazy load, czy ma odpowiedni rozmiar i format, a w PageSpeed znikaj\u0105 ostrze\u017cenia o nieprawid\u0142owych rozmiarach oraz przestarza\u0142ych formatach. Dodatkowo por\u00f3wnaj w zak\u0142adce \u201eNetwork\u201d, ile czasu zajmuje pobranie pierwszego du\u017cego obrazu przed i po optymalizacji \u2013 to prosta kontrola, czy wprowadzone zmiany faktycznie prze\u0142o\u017cy\u0142y si\u0119 na szybszy LCP.<\/p>\n<p>Je\u015bli przepracujesz kolejno hosting, motyw i builder, wtyczki, cache oraz obrazy, WordPress zaczyna zachowywa\u0107 si\u0119 przewidywalnie: Core Web Vitals stabilizuj\u0105 si\u0119, a ka\u017cda kolejna zmiana ma mierzalny efekt. \u0141atwiej wtedy rozwija\u0107 serwis, bo zamiast gaszenia po\u017car\u00f3w &ndash; krok po kroku usprawniasz konkretne elementy, \u015bwiadomie testujesz wyniki i utrzymujesz serwis w stanie, w kt\u00f3rym nowe tre\u015bci czy funkcje nie rozwalaj\u0105 wydajno\u015bci przy ka\u017cdej aktualizacji.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Blad_6_%E2%80%93_Zbyt_ciezki_i_chaotyczny_JavaScript_blokujacy_interakcje_i_psujacy_INP\"><\/span>B\u0142\u0105d 6 \u2013 Zbyt ci\u0119\u017cki i chaotyczny JavaScript (blokuj\u0105cy interakcj\u0119 i psuj\u0105cy INP)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jak_JS_zabija_INP_i_FID_w_WordPressie\"><\/span>Jak JS zabija INP i FID w WordPressie<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Coraz wi\u0119cej motyw\u00f3w i wtyczek do WordPressa dok\u0142ada swoje skrypty: slidery, pop-upy, chaty, analityka, trackery, efekty \u201eparallax\u201d, animacje na scroll. Ka\u017cdy z nich <strong>co\u015b<\/strong> robi przy \u0142adowaniu strony albo przy ka\u017cdym ruchu u\u017cytkownika. Efekt:<\/p>\n<ul>\n<li>d\u0142ugi czas blokowania g\u0142\u00f3wnego w\u0105tku przegl\u0105darki (Total Blocking Time),<\/li>\n<li>op\u00f3\u017aniona reakcja na klikni\u0119cie przycisku (s\u0142aby INP),<\/li>\n<li>\u201ezamro\u017cone\u201d formularze, menu, filtry w sklepie przy s\u0142abszych urz\u0105dzeniach.<\/li>\n<\/ul>\n<p>Typowy scenariusz: na stronie dzia\u0142a 10 skrypt\u00f3w \u015bledz\u0105cych, 3 r\u00f3\u017cne slidery, live chat i kilka integracji marketing automation. Wszystko startuje od razu przy wczytaniu strony, a u\u017cytkownik po klikni\u0119ciu \u201eDodaj do koszyka\u201d czeka u\u0142amki sekund, a\u017c przegl\u0105darka \u201eprzegryzie\u201d wszystkie zdarzenia i event listenery. Google to widzi \u2013 INP ro\u015bnie.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Krok_po_kroku_porzadki_w_JavaScript\"><\/span>Krok po kroku: porz\u0105dki w JavaScript<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Krok 1: prze\u015bwietl, co faktycznie si\u0119 \u0142aduje<\/strong><\/p>\n<ul>\n<li>W DevTools (zak\u0142adka \u201eNetwork\u201d &gt; filter \u201eJS\u201d) sprawd\u017a liczb\u0119 i wag\u0119 plik\u00f3w JS na:\n<ul>\n<li>stronie g\u0142\u00f3wnej,<\/li>\n<li>typowej podstronie bloga,<\/li>\n<li>stronie produktowej lub landing page.<\/li>\n<\/ul>\n<\/li>\n<li>W zak\u0142adce \u201ePerformance\u201d lub \u201ePerformance insights\u201d zobacz, co zajmuje najwi\u0119cej czasu na g\u0142\u00f3wnym w\u0105tku (long tasks, eventy). Skup si\u0119 na skryptach o najwi\u0119kszym czasie wykonywania.<\/li>\n<li>Sprawd\u017a \u017ar\u00f3d\u0142o skrypt\u00f3w: czy pochodz\u0105 z motywu, wtyczek, zewn\u0119trznych us\u0142ug (cdn, tag manager, pixel itp.).<\/li>\n<\/ul>\n<p><strong>Krok 2: odetnij nieu\u017cywane skrypty na poziomie WordPressa<\/strong><\/p>\n<p>Zanim wejdziesz w zaawansowane \u201eoptimizery\u201d, usu\u0144 to, czego naprawd\u0119 nie potrzebujesz.<\/p>\n<ul>\n<li>Przejd\u017a po wtyczkach odpowiedzialnych za:\n<ul>\n<li>efekty wizualne (animacje, parallax, fancy slider),<\/li>\n<li>pop-upy, bannery, notification bary,<\/li>\n<li>stare integracje \u015bledz\u0105ce, z kt\u00f3rych nikt ju\u017c nie korzysta.<\/li>\n<\/ul>\n<\/li>\n<li>Krok 1: wy\u0142\u0105cz na testowej kopii to, co nie jest krytyczne dla sprzeda\u017cy \/ lead\u00f3w.<\/li>\n<li>Krok 2: po ka\u017cdej zmianie odpal PageSpeed i DevTools, \u017ceby sprawdzi\u0107, jak spad\u0142a liczba i waga JS oraz jak zmieni\u0142 si\u0119 INP.<\/li>\n<\/ul>\n<p><strong>Krok 3: warunkowe \u0142adowanie skrypt\u00f3w (tylko tam, gdzie s\u0105 potrzebne)<\/strong><\/p>\n<p>Wiele wtyczek \u0142aduje swoje JS na ka\u017cdej podstronie, chocia\u017c funkcje s\u0105 u\u017cywane tylko w jednym miejscu. Da si\u0119 to ograniczy\u0107.<\/p>\n<ul>\n<li>Skrypty od:\n<ul>\n<li>formularza kontaktowego \u2013 \u0142aduj tylko na stronie kontaktu i tam, gdzie formularz faktycznie wyst\u0119puje,<\/li>\n<li>sliderek i galerii \u2013 tylko na podstronach z takimi blokami,<\/li>\n<li>WooCommerce \u2013 unikaj \u0142adowania ci\u0119\u017ckich skrypt\u00f3w koszyka na zwyk\u0142ych stronach bloga.<\/li>\n<\/ul>\n<\/li>\n<li>U\u017cyj wtyczki typu <strong>Asset CleanUp<\/strong>, <strong>Perfmatters<\/strong> lub podobnej, \u017ceby:\n<ul>\n<li>wy\u0142\u0105czy\u0107 wybrane pliki JS\/CSS na okre\u015blonych typach stron (np. <code>single post<\/code>, <code>page<\/code>, <code>product<\/code>),<\/li>\n<li>pozby\u0107 si\u0119 globalnych skrypt\u00f3w, kt\u00f3re motyw \u0142aduje \u201ena wszelki wypadek\u201d.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 4: op\u00f3\u017anienie i asynchroniczne \u0142adowanie JS<\/strong><\/p>\n<p>Gdy zostan\u0105 tylko potrzebne skrypty, mo\u017cna je za\u0142adowa\u0107 sprytniej, \u017ceby nie blokowa\u0142y interakcji.<\/p>\n<ul>\n<li>Dla skrypt\u00f3w:\n<ul>\n<li>analitycznych (GA, FB Pixel, Hotjar itp.),<\/li>\n<li>chat\u00f3w, widget\u00f3w social, rekomendacji produktowych,<\/li>\n<\/ul>\n<p>    ustaw:<\/p>\n<ul>\n<li><code>defer<\/code> (\u0142adowanie po parsing\u2019u HTML) lub<\/li>\n<li>\u201edelay JS\u201d \u2013 wtyczka cache\/optimizera mo\u017ce op\u00f3\u017ani\u0107 start do pierwszej interakcji u\u017cytkownika (scroll, klik).<\/li>\n<\/ul>\n<\/li>\n<li>Krytyczny JS odpowiedzialny za:\n<ul>\n<li>menu mobilne,<\/li>\n<li>podstawow\u0105 obs\u0142ug\u0119 koszyka (dodanie produktu),<\/li>\n<li>kluczowe formularze,<\/li>\n<\/ul>\n<p>    \u0142aduj mo\u017cliwie wcze\u015bnie, ale tak, aby:<\/p>\n<ul>\n<li>nie by\u0142 zmini\ufb01kowany do jednej wielkiej \u201ekuli\u201d z innymi skryptami,<\/li>\n<li>nie by\u0142 wpychany jako inline do HTML, je\u015bli jest ci\u0119\u017cki.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Typowy b\u0142\u0105d: wszystko wrzucone w jedn\u0105 paczk\u0119 JS i ustawione na \u201edefer\u201d, przez co ma\u0142y skrypt do menu czeka, a\u017c za\u0142aduje si\u0119 i zparsuje ca\u0142y pakiet analityki, slider\u00f3w i pop-up\u00f3w.<\/p>\n<p><strong>Krok 5: minimalizacja i \u0142\u0105czenie, ale z umiarem<\/strong><\/p>\n<p>Minifikacja JS jest pomocna, \u0142\u0105czenie \u2013 nie zawsze. Przy HTTP\/2 i HTTP\/3 wiele ma\u0142ych plik\u00f3w nie jest takim problemem, jak du\u017cy, monolityczny plik.<\/p>\n<ul>\n<li>W wtyczce optymalizuj\u0105cej JS:\n<ul>\n<li>w\u0142\u0105cz minifikacj\u0119 (usuni\u0119cie bia\u0142ych znak\u00f3w, komentarzy),<\/li>\n<li>dla \u0142\u0105czenia plik\u00f3w ustaw osobne paczki dla:\n<ul>\n<li>skrypt\u00f3w \u201ekrytycznych\u201d (UI),<\/li>\n<li>skrypt\u00f3w \u201edrugoplanowych\u201d (analityka, integracje).<\/li>\n<\/ul>\n<\/li>\n<li>nie \u0142\u0105cz zewn\u0119trznych skrypt\u00f3w z lokalnymi \u2013 utrudnia to cache po stronie przegl\u0105darki i kontrol\u0119 b\u0142\u0119d\u00f3w.<\/li>\n<\/ul>\n<\/li>\n<li>Po w\u0142\u0105czeniu \u0142\u0105czenia przetestuj:\n<ul>\n<li>panel logowania,<\/li>\n<li>koszyk i proces zam\u00f3wienia,<\/li>\n<li>formularze kontaktowe.<\/li>\n<p>      Je\u015bli co\u015b nie dzia\u0142a \u2013 wyklucz dane skrypty z \u0142\u0105czenia.<\/ul>\n<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: w PageSpeed obserwuj wska\u017aniki INP i TBT, a w DevTools zak\u0142adk\u0119 \u201ePerformance\u201d \u2013 czy zmniejszy\u0142a si\u0119 liczba \u201elong tasks\u201d oraz \u0142\u0105czny czas blokowania. R\u00f3wnolegle na realnym urz\u0105dzeniu (telefon, zwyk\u0142y laptop) klikaj szybko w menu, koszyk, filtry: przegl\u0105darka powinna reagowa\u0107 natychmiast, bez przyci\u0119\u0107.<\/p>\n<figure class=\"oai-pexels-image\"><img decoding=\"async\" src=\"https:\/\/excelraport.pl\/wp-content\/uploads\/2026\/05\/zblizenie-na-droge-z-zoltym-napisem-slow-na-spokojnej-ulicy-pexels-2029478.jpg\" alt=\"Zbli\u017cenie na drog\u0119 z \u017c\u00f3\u0142tym napisem slow na spokojnej ulicy Singapuru\" loading=\"lazy\" class=\"oai-pexels-image__img\" \/><figcaption>\u0179r\u00f3d\u0142o: Pexels | Autor: Song Kaiyue<\/figcaption><\/figure>\n<h2><span class=\"ez-toc-section\" id=\"Blad_7_%E2%80%93_Zle_zoptymalizowane_CSS_i_krytyczne_style_FOUC_layout_shift_i_wolny_render\"><\/span>B\u0142\u0105d 7 \u2013 \u0179le zoptymalizowane CSS i krytyczne style (FOUC, layout shift i wolny render)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Jak_CSS_potrafi_opoznic_FCP_i_LCP\"><\/span>Jak CSS potrafi op\u00f3\u017ani\u0107 FCP i LCP<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>WordPressowe motywy i buildery tworz\u0105 zwykle dziesi\u0105tki plik\u00f3w CSS: globalne style motywu, style buildera, style wtyczek, dodatkowe \u201ecustom CSS\u201d z panelu i jeszcze style wklejone inline. Gdy ka\u017cdy z tych plik\u00f3w jest:<\/p>\n<ul>\n<li>du\u017cy (setki kilobajt\u00f3w),<\/li>\n<li>\u0142adowany w <code>&lt;head&gt;<\/code> jako blokuj\u0105cy render,<\/li>\n<li>cz\u0119\u015bciowo nieu\u017cywany na konkretnej stronie,<\/li>\n<\/ul>\n<p>przegl\u0105darka op\u00f3\u017ania render strony do momentu pobrania i przetworzenia CSS. Pojawiaj\u0105 si\u0119 migotania styl\u00f3w (FOUC), skoki uk\u0142adu (CLS), a LCP przesuwa si\u0119 w czasie.<\/p>\n<h3><span class=\"ez-toc-section\" id=\"Krok_po_kroku_uproszczenie_i_podzial_CSS\"><\/span>Krok po kroku: uproszczenie i podzia\u0142 CSS<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Krok 1: sprawd\u017a, ile CSS faktycznie si\u0119 \u0142aduje<\/strong><\/p>\n<ul>\n<li>W DevTools (Network &gt; filter \u201eCSS\u201d) podejrzyj:\n<ul>\n<li>liczb\u0119 plik\u00f3w,<\/li>\n<li>wag\u0119 ka\u017cdego z nich,<\/li>\n<li>czas pobierania (szczeg\u00f3lnie zewn\u0119trzne CDN-y).<\/li>\n<\/ul>\n<\/li>\n<li>W narz\u0119dziu Coverage (DevTools &gt; More tools &gt; Coverage) sprawd\u017a, jaki procent danego pliku CSS jest u\u017cywany na konkretnej podstronie \u2013 cz\u0119sto mniej ni\u017c po\u0142owa.<\/li>\n<\/ul>\n<p><strong>Krok 2: wy\u0142\u0105cz zb\u0119dne style z konkretnych wtyczek<\/strong><\/p>\n<p>Podobnie jak przy JS, wiele wtyczek \u0142aduje swoje style wsz\u0119dzie, cho\u0107 u\u017cywane s\u0105 raz na kilka podstron.<\/p>\n<ul>\n<li>Przy u\u017cyciu Asset CleanUp \/ Perfmatters:\n<ul>\n<li>wy\u0142\u0105cz CSS:\n<ul>\n<li>formularza kontaktowego na stronach, gdzie formularza nie ma,<\/li>\n<li>lightbox\u00f3w i slider\u00f3w na zwyk\u0142ych wpisach blogowych,<\/li>\n<li>WooCommerce (lub jego modu\u0142\u00f3w) na stronach firmowych typu \u201eO nas\u201d czy \u201eKontakt\u201d, je\u015bli motyw nie wymaga ich globalnie.<\/li>\n<\/ul>\n<\/li>\n<li>zadbaj, aby podstawowe style motywu dzia\u0142a\u0142y poprawnie po wy\u0142\u0105czeniu \u2013 przetestuj kilka typ\u00f3w stron.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 3: minifikacja i rozs\u0105dne \u0142\u0105czenie CSS<\/strong><\/p>\n<p>Du\u017ci gracze cz\u0119sto stosuj\u0105 strategi\u0119: jeden plik z krytycznymi stylami + kilka mniejszych paczek dla poszczeg\u00f3lnych sekcji funkcjonalnych.<\/p>\n<ul>\n<li>W wtyczce optymalizuj\u0105cej:\n<ul>\n<li>w\u0142\u0105cz minifikacj\u0119 CSS,<\/li>\n<li>po\u0142\u0105cz drobne pliki w wi\u0119ksze paczki, ale:\n<ul>\n<li>unikaj tworzenia jednego ogromnego pliku dla ca\u0142ego serwisu,<\/li>\n<li>rozwa\u017c osobne pliki dla:\n<ul>\n<li>strony g\u0142\u00f3wnej \/ landingu,<\/li>\n<li>blog\/wpisy,<\/li>\n<li>sklep (WooCommerce).<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Je\u015bli builder generuje per-stronowe style inline, wy\u0142\u0105cz opcje, kt\u00f3re dok\u0142adaj\u0105 dodatkowe pliki CSS dla ka\u017cdego bloku, je\u015bli nie s\u0105 niezb\u0119dne.<\/li>\n<\/ul>\n<p><strong>Krok 4: critical CSS i \u201eabove the fold\u201d<\/strong><\/p>\n<p>Dobrze wdro\u017cone critical CSS mocno przyspiesza FCP\/LCP: przegl\u0105darka najpierw dostaje zestaw podstawowych styl\u00f3w dla widocznej cz\u0119\u015bci ekranu, reszta \u0142aduje si\u0119 asynchronicznie.<\/p>\n<ul>\n<li>U\u017cyj:\n<ul>\n<li>wbudowanej opcji critical CSS w wtyczkach typu WP Rocket, LiteSpeed Cache itp., lub<\/li>\n<li>zewn\u0119trznych narz\u0119dzi generuj\u0105cych krytyczne style per adres URL.<\/li>\n<\/ul>\n<\/li>\n<li>Skonfiguruj:\n<ul>\n<li>wstrzykni\u0119cie critical CSS inline w <code>&lt;head&gt;<\/code>,<\/li>\n<li>asynchroniczne \u0142adowanie pozosta\u0142ych arkuszy (np. z atrybutem <code>media=\"print\"<\/code> i przebiciem na <code>all<\/code> po za\u0142adowaniu).<\/li>\n<\/ul>\n<\/li>\n<li>Po wdro\u017ceniu przejd\u017a przez:\n<ul>\n<li>kilka typ\u00f3w urz\u0105dze\u0144 (desktop, tablet, telefon),<\/li>\n<li>r\u00f3\u017cne przegl\u0105darki,<\/li>\n<li>kilka szablon\u00f3w stron (g\u0142\u00f3wna, produkt, wpis).<\/li>\n<p>      Sprawd\u017a, czy nie migaj\u0105 style (nag\u0142\u00f3wek bez stylu, potem z) i czy nie pojawiaj\u0105 si\u0119 \u201ego\u0142e\u201d elementy przez u\u0142amek sekundy.<\/ul>\n<\/li>\n<\/ul>\n<p><strong>Krok 5: uporz\u0105dkowanie font\u00f3w i ich styl\u00f3w<\/strong><\/p>\n<p>Cz\u0119\u015bci\u0105 problemu CSS s\u0105 fonty: r\u00f3\u017cne odmiany (light, regular, bold, italic) i wielko\u015bci, \u0142adowane dla samej zasady. To wp\u0142ywa na FOUT\/FOIT i CLS.<\/p>\n<ul>\n<li>W konfiguracji motywu\/buildera:\n<ul>\n<li>ogranicz liczb\u0119 font\u00f3w do 1\u20132 rodzin (np. nag\u0142\u00f3wki + tekst),<\/li>\n<li>dla ka\u017cdej rodziny zostaw 2\u20133 odmiany (np. 400, 600, 700), a reszt\u0119 wy\u0142\u0105cz.<\/li>\n<\/ul>\n<\/li>\n<li>\u0141aduj\u0105c Google Fonts:\n<ul>\n<li>u\u017cyj parametru <code>display=swap<\/code> lub lepiej \u201eoptional\u201d,<\/li>\n<li>przenie\u015b fonty lokalnie (opcje w wi\u0119kszo\u015bci lepszych motyw\u00f3w \/ wtyczek performance), aby ograniczy\u0107 zale\u017cno\u015b\u0107 od zewn\u0119trznego CDN.<\/li>\n<\/ul>\n<\/li>\n<li>Zadbaj o:\n<ul>\n<li>preload najwa\u017cniejszego fontu (nag\u0142\u00f3wki\/tekst nad lini\u0105 za\u0142amania) przez <code>&lt;link rel=\"preload\" as=\"font\"&gt;<\/code>,<\/li>\n<li>poprawnie zdefiniowane <code>font-family<\/code> i <code>font-weight<\/code>, \u017ceby unikn\u0105\u0107 \u201eprzeskakiwania\u201d grubo\u015bci po dograniu fontu.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Co sprawdzi\u0107: w PageSpeed kontroluj \u201eRemove unused CSS\u201d, \u201eEliminate render-blocking resources\u201d oraz ostrze\u017cenia dotycz\u0105ce font\u00f3w. Wizualnie \u2013 czy pierwsze malowanie strony (nag\u0142\u00f3wka, hero) pojawia si\u0119 szybko i stabilnie, bez \u201eb\u0142ysk\u00f3w\u201d styl\u00f3w i skok\u00f3w uk\u0142adu.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Blad_8_%E2%80%93_Zbyt_ciezkie_i_zle_wpiete_zewnetrzne_skrypty_analityka_tag_manager_chaty\"><\/span>B\u0142\u0105d 8 \u2013 Zbyt ci\u0119\u017ckie i \u017ale wpi\u0119te zewn\u0119trzne skrypty (analityka, tag manager, chaty)<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<h3><span class=\"ez-toc-section\" id=\"Dlaczego_integracje_marketingowe_psuja_Core_Web_Vitals\"><\/span>Dlaczego integracje marketingowe psuj\u0105 Core Web Vitals<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p>Narz\u0119dzia analityczne i marketingowe s\u0105 potrzebne, ale mog\u0105 zdusi\u0107 wydajno\u015b\u0107, je\u015bli ka\u017cde z nich:<\/p>\n<ul>\n<li>\u0142aduje si\u0119 synchronicznie w <code>&lt;head&gt;<\/code>,<\/li>\n<li>generuje kolejne skrypty i iframe\u2019y (reklamy, heatmapy, trackery),<\/li>\n<li>odpala zaawansowane funkcje na starcie, zanim u\u017cytkownik w og\u00f3le przewinie stron\u0119.<\/li>\n<\/ul>\n<h3><span class=\"ez-toc-section\" id=\"Krok_po_kroku_jak_okielznac_zewnetrzne_skrypty\"><\/span>Krok po kroku: jak okie\u0142zna\u0107 zewn\u0119trzne skrypty<span class=\"ez-toc-section-end\"><\/span><\/h3>\n<p><strong>Krok 1: inwentaryzacja wszystkich integracji<\/strong><\/p>\n<p>Najpierw zobacz, co faktycznie jest podpi\u0119te. W Source\/Network w DevTools wyszukaj domeny typu <code>google-analytics.com<\/code>, <code>googletagmanager.com<\/code>, <code>facebook.net<\/code>, narz\u0119dzia heatmap, live chaty, popupy, piksele reklamowe. Zr\u00f3b prost\u0105 list\u0119: kt\u00f3re skrypty s\u0105 kluczowe dla biznesu (np. GA4, konwersje Google Ads), a kt\u00f3re dzia\u0142aj\u0105 \u201eod \u015bwi\u0119ta\u201d albo kto\u015b je kiedy\u015b testowa\u0142 i tak ju\u017c zosta\u0142y.<\/p>\n<p><strong>Krok 2: przenie\u015b jak najwi\u0119cej do Tag Managera<\/strong><\/p>\n<p>Je\u015bli na stronie jest kilka osobnych snippet\u00f3w (GA, piksel FB, LinkedIn, Hotjar), scentralizuj je w Google Tag Managerze. Zostaje jeden g\u0142\u00f3wny skrypt GTM, a ca\u0142\u0105 reszt\u0105 zarz\u0105dzasz w interfejsie. Przy okazji mo\u017cesz w GTM:<\/p>\n<ul>\n<li>op\u00f3\u017ani\u0107 odpalanie niekt\u00f3rych tag\u00f3w (np. heatmapy) do czasu interakcji u\u017cytkownika,<\/li>\n<li>\u0142adowa\u0107 tagi tylko na wybranych podstronach, a nie na ca\u0142ym serwisie,<\/li>\n<li>u\u017cy\u0107 regu\u0142, kt\u00f3re blokuj\u0105 zb\u0119dne trackery dla zalogowanych administrator\u00f3w.<\/li>\n<\/ul>\n<p><strong>Krok 3: op\u00f3\u017anienie \u0142adowania i \u201econsent mode\u201d<\/strong><\/p>\n<p>Narz\u0119dzia privacy\/RODO i lepsze wtyczki cache maj\u0105 funkcje typu \u201edelay JS execution\u201d albo \u201eload on user interaction\u201d. Skonfiguruj je tak, aby:<\/p>\n<ul>\n<li>analityka podstawowa (np. GA4) startowa\u0142a po wyra\u017ceniu zgody w banerze cookies,<\/li>\n<li>ci\u0119\u017csze narz\u0119dzia (session replay, heatmapy, chat) uruchamia\u0142y si\u0119 dopiero po pierwszym scrollu, klikni\u0119ciu lub kilku sekundach obecno\u015bci na stronie,<\/li>\n<li>skrypty by\u0142y wstrzymane ca\u0142kowicie, je\u015bli u\u017cytkownik odrzuci kategorie marketingowe\/analityczne.<\/li>\n<\/ul>\n<p>Unikaj b\u0142\u0119du: pe\u0142ne za\u0142adowanie GTM + wszystkich tag\u00f3w przed pokazaniem banera \u2013 przegl\u0105darka wykona skrypty, zanim u\u017cytkownik w og\u00f3le ma szans\u0119 na decyzj\u0119.<\/p>\n<p><strong>Krok 4: optymalizacja chat\u00f3w i widget\u00f3w<\/strong><\/p>\n<p>Chaty, \u201epomocnicy\u201d i wid\u017cety opinii to cz\u0119sty zab\u00f3jca INP. Zamiast \u0142adowa\u0107 ca\u0142y chat od razu:<\/p>\n<ul>\n<li>\u0142aduj tylko lekki \u201elauncher\u201d (ikonka b\u0105belka) przy starcie,<\/li>\n<li>pe\u0142ny skrypt chatu uruchamiaj dopiero po klikni\u0119ciu w ikonk\u0119 lub po kilku sekundach obecno\u015bci na stronie,<\/li>\n<li>je\u015bli narz\u0119dzie na to pozwala \u2013 u\u017cyj trybu \u201elight\u201d lub wersji bez zb\u0119dnych integracji.<\/li>\n<\/ul>\n<p>Przetestuj te\u017c, ile widget\u00f3w jest faktycznie potrzebnych: przycisk chat + popup + sticky banner z promocj\u0105 to ju\u017c trzy oddzielne skrypty, kt\u00f3re mog\u0105 blokowa\u0107 w\u0105tki przegl\u0105darki.<\/p>\n<p>Co sprawdzi\u0107: w PageSpeed zwr\u00f3\u0107 uwag\u0119 na \u201eThird-party code\u201d i \u201eReduce JavaScript execution time\u201d. W DevTools w zak\u0142adce \u201ePerformance\u201d zobacz, czy po wdro\u017ceniu op\u00f3\u017anie\u0144 i consent mode spad\u0142a liczba d\u0142ugich zada\u0144 powi\u0105zanych z domenami zewn\u0119trznymi. Na realnym urz\u0105dzeniu zweryfikuj, czy baner cookies, chat i inne widgety nie \u201eszarpi\u0105\u201d przewijania i klik\u00f3w w pierwszych sekundach wizyty.<\/p>\n<p>Je\u015bli krok po kroku uporz\u0105dkujesz hosting, motyw, wtyczki, cache, media oraz skrypty i style, Core Web Vitals przestaj\u0105 by\u0107 loteri\u0105. Zostaje przewidywalny proces: diagnoza, jedna zmiana, test, kolejna zmiana. Taki rytm jest mniej efektowny ni\u017c \u201emagiczna\u201d wtyczka do optymalizacji, ale w praktyce w\u0142a\u015bnie on robi r\u00f3\u017cnic\u0119 mi\u0119dzy przeci\u0119tnym WordPressem a szybkim, stabilnym serwisem, kt\u00f3ry dobrze konwertuje i nie boi si\u0119 kolejnych aktualizacji algorytm\u00f3w.<\/p>\n<h2><span class=\"ez-toc-section\" id=\"Zrodla_informacji\"><\/span>\u0179r\u00f3d\u0142a informacji<span class=\"ez-toc-section-end\"><\/span><\/h2>\n<ul>\n<li><strong>Web Vitals<\/strong>. Google \u2013 Oficjalne definicje i progi Core Web Vitals (LCP, CLS, INP)<\/li>\n<li><strong>Interaction to Next Paint (INP)<\/strong>. Google \u2013 Szczeg\u00f3\u0142owe om\u00f3wienie metryki INP i r\u00f3\u017cnic wzgl\u0119dem FID<\/li>\n<li><strong>WebPageTest Documentation<\/strong>. Catchpoint Systems \u2013 Opis test\u00f3w, TTFB, waterfall i analizy wydajno\u015bci zasob\u00f3w<\/li>\n<li><strong>GTmetrix Documentation<\/strong>. GT.net \u2013 Instrukcje u\u017cycia GTmetrix, interpretacja metryk i waterfall<\/li>\n<li><strong>WordPress Hosting Handbook<\/strong>. WordPress.org \u2013 Zalecenia dot. hostingu, TTFB, cache i konfiguracji serwera dla WordPressa<\/li>\n<li><strong>Web Performance Optimization Guide<\/strong>. Mozilla Developer Network \u2013 Og\u00f3lne zasady optymalizacji zasob\u00f3w, JS, CSS, obraz\u00f3w i wp\u0142ywu na UX<\/li>\n<\/ul>\n<p><em><\/em><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Poznaj najcz\u0119stsze b\u0142\u0119dy w WordPressie, kt\u00f3re spowalniaj\u0105 stron\u0119 i obni\u017caj\u0105 Core Web Vitals, oraz sprawdzone sposoby ich naprawy<\/p>\n","protected":false},"author":5,"featured_media":13174,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[17],"tags":[],"class_list":["post-13173","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-wordpress"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13173","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/comments?post=13173"}],"version-history":[{"count":1,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13173\/revisions"}],"predecessor-version":[{"id":13178,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/posts\/13173\/revisions\/13178"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/media\/13174"}],"wp:attachment":[{"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/media?parent=13173"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/categories?post=13173"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/excelraport.pl\/index.php\/wp-json\/wp\/v2\/tags?post=13173"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}