Optymalizacja stron internetowych, która realnie zwiększa sprzedaż 

Twoja strona może wyglądać dobrze — ale jeśli ładuje się zbyt wolno, traci klientów, pozycje w Google i wiarygodność. Optymalizacja stron www to nie kosmetyka. To techniczna przebudowa wydajności, która skraca czas ładowania, poprawia wyniki Core Web Vitals i zwiększa konwersję bez zmiany designu.

SPRAWDŹ WYDAJNOŚĆ SWOJEJ STRONY
optymalizacja stron internetowych - wyniki

Dlaczego warto zadbać o wydajność strony internetowej? 

Wydajność strony to dziś jeden z kluczowych czynników wpływających na sprzedaż, widoczność w Google i zaufanie do marki. Użytkownik nie czeka — jeśli strona ładuje się zbyt długo lub działa niestabilnie, po prostu ją opuszcza. Optymalizacja wydajności to realne zwiększenie skuteczności strony bez zmiany jej wyglądu czy oferty.

Szybkość, która bezpośrednio wpływa na konwersję

Każda dodatkowa sekunda ładowania obniża liczbę zapytań i sprzedaży. Szybka strona oznacza płynne przejścia, natychmiastową reakcję na kliknięcia i brak irytujących opóźnień — szczególnie na urządzeniach mobilnych.

Większa liczba zapytań i transakcji

Lepsze pozycje w Google 
i stabilność SEO

Google ocenia strony również pod kątem wydajności (Core Web Vitals). Niestabilne elementy, wolne zasoby czy źle zoptymalizowany kod mogą obniżać widoczność w wynikach wyszukiwania. 

Stabilniejszy ruch organiczny

Większe bezpieczeństwo 
i gotowość na większy ruch

Dobrze zoptymalizowana strona jest bardziej odporna na przeciążenia, nagłe skoki ruchu czy ataki botów. Wydajność to nie tylko szybkość, ale też stabilna infrastruktura i odpowiednia konfiguracja cache oraz CDN. 

Stabilna strona internetowa

Zamów optymalizację

Sprawdź rzeczywistą wydajność swojej strony

Bezpłatna analiza PageSpeed Mobile + Desktop. Wyniki w kilkanaście sekund – bez rejestracji.

✓ Darmowy raport – zero ukrytych kosztów✓ Pełna analiza Core Web Vitals (Mobile + Desktop)✓ Bez rejestracji i bez zobowiązań
Łączę z Google PageSpeed…
Mobile
Wynik dla urządzeń mobilnych – kluczowy dla Google i ponad 70% użytkowników
Desktop
Wynik dla komputerów – ważny dla ruchu biznesowego i B2B
Średnia
Ogólna ocena wydajności – im wyżej, tym lepsza widoczność i konwersja

Chcesz realnie poprawić te wyniki i zdobywać więcej klientów?

ZAMAWIAM BEZPŁATNĄ KONSULTACJĘ

Co tak naprawdę wpływa na wydajność 
strony internetowej?

Wolna strona to rzadko wina jednej rzeczy. Zazwyczaj to kilka elementów naraz – każdy dokłada swoje, a razem dają efekt, który użytkownik odczuwa jako „ta strona się ślimaczy". Poniżej znajdziesz konkretne obszary, którymi zajmujemy się podczas każdej optymalizacji.

 Hosting i serwer

To fundament całej wydajności. Nawet najlepiej zrobiona strona będzie wolna, jeśli serwer słabo odpowiada. Zły hosting to najczęstszy powód, dla którego optymalizacja „nie daje efektów" – bo problem leży głębiej, zanim cokolwiek w ogóle dotrze do przeglądarki użytkownika.

CZAS ODPOWIEDZI SERWERA Core Web Vitals Szybkość ładowania

 ​Cache i CDN (Cloudflare)

Zamiast generować stronę od zera przy każdym wejściu, dobrze skonfigurowany cache serwuje gotową wersję – błyskawicznie. CDN sprawia dodatkowo, że pliki trafiają do użytkownika z najbliższego mu serwera, nie z drugiego końca Europy. Większość firm ma Cloudflare podpięty, ale źle skonfigurowany – i przez to nie korzysta z połowy jego możliwości.

Cloudflare CACHE (PAMIĘĆ PODRĘCZNA) CDN

 Zdjęcia

Zdjęcia, które ważą po kilka megabajtów, są zapisane w przestarzałym formacie albo ładują się wszystkie naraz – to jeden z najczęstszych powodów wolnych stron. Optymalizacja obrazów to zwykle jedno z pierwszych miejsc, gdzie widać natychmiastowy efekt po wdrożeniu zmian.

Format WEBP i Avif rozmiar plików ładowanie obrazów

 Skrypty i kod strony

Każdy wtyczka, piksel śledzący czy zewnętrzny skrypt to dodatkowy ciężar, który przeglądarka musi załadować. Gdy jest ich zbyt wiele albo są źle załadowane, strona dosłownie czeka zanim wyświetli cokolwiek użytkownikowi. Porządkowanie kodu i zarządzanie skryptami to jeden z kluczowych elementów optymalizacji.

Skrypty zewnętrzne wtyczki wordpress czas wyświetlania

 Baza danych

Sklepy internetowe z dużą liczbą produktów i zamówień często cierpią na wolną bazę danych – i właściciel zwykle tego nie widzi. Strona się generuje, ale zajmuje to 4 sekundy zamiast pół. Regularne porządkowanie i optymalizacja bazy to fundament wydajnego sklepu, który skaluje się bez problemów.

WooCommerce WordPress Optymalizacja bazy

 Strona na telefonie

Ponad połowa ruchu w sieci pochodzi z urządzeń mobilnych, a Google ocenia Twoją stronę właśnie na telefonie. Liczy się nie tylko szybkość ładowania, ale też to czy strona nie „skacze" podczas przewijania i jak szybko reaguje na dotknięcie. Słabe wyniki mobilne to dziś bezpośredni wpływ na pozycje w wyszukiwarce.

Wersja mobilna Google Mobile first płynność działania

Jak wygląda strona przed 
i po optymalizacji?

Liczby mówią same za siebie. Poniżej przykład strony, przy której pracowaliśmy – sklep internetowy z kilkuset produktami, WordPress i WooCommerce. Czas ładowania skróciliśmy ponad trzykrotnie, bez zmiany wyglądu strony ani jej treści.

Przed optymalizacją

  • Czas ładowania (mobile): 7,3s
  • Czas ładowania (desktop): 5,8s
  • Wynik PageSpeed (mobile): 32/100
  • Wynik PageSpeed (mobile): 46/100
  • Cache / CDN: Brak
  • Rozmiar strony: 1,2GB

Po optymalizacji GBoost

  • Czas ładowania (mobile): 1.9s
  • Czas ładowania (desktop): 1,0s
  • Wynik PageSpeed (mobile):90/100
  • Wynik PageSpeed (mobile):96/100
  • Cache / CDN: Cloudflare + LiteSpeed
  • Rozmiar strony:750MB

Jakie technologie możemy zoptymalizować?

Optymalizujemy strony zbudowane na najpopularniejszych platformach i frameworkach. Nieważne, czy masz sklep na WooCommerce, stronę firmową w czystym HTML czy sklep na Shoperze – wiemy, gdzie szukać problemów i jak je naprawić.

CMS i sklepy

WordPress

WooCommerce

Shoper

Shopify

PrestaShop

WebFlow

Frameworki i zaawansowane platformy

HTML i CSS

NextJS

Laravel

Magento

Joomla

Drupal

Cennikoptymalizacji stron

Dobry start

Start

Podstawowa optymalizacja dla stron WordPress. Cache, obrazy, Cloudflare i usunięcie balastu – szybkie efekty bez ingerencji w kod.

WordPress / ElementorWizytówki / landing pageStrony firmowe
500 zł
netto · jednorazowo
Audyt wydajności
PageSpeed Insights, Core Web Vitals
Konfiguracja cache
LiteSpeed Cache / W3 Total Cache
Optymalizacja obrazów
kompresja, WebP, lazy loading
Cloudflare CDN
SSL, reguły cache, minifikacja
Usunięcie balastu
zbędne wtyczki, skrypty, style
Raport przed i po
wyniki + krótki plan kolejnych kroków
Najchętniej wybierany

Pro

Front-end i podstawy backendu. Dla sklepów i rozbudowanych stron, gdzie samo cache i wtyczki już nie wystarczają.

Sklepy WooCommerceRozbudowane WPHigh traffic
1 200 zł
netto · jednorazowo
Wszystko z pakietu Start
pełna optymalizacja front-end
Zarządzanie skryptami i CSS
defer, async, eliminacja render-blocking
Optymalizacja bazy danych
tabele, transient cache, autoload
Tuning serwera i PHP
OPcache, limity pamięci
Zaawansowane reguły Cloudflare
bypass koszyka, WAF, Firewall Rules
Raport końcowy z planem
wyniki + rekomendacje dalszych kroków
Backend + kod

Custom

Kiedy wtyczki i ustawienia już nie wystarczą – wchodzimy w PHP i JS. Dedykowane rozwiązania dla wymagających platform i skomplikowanych architektur.

Next.js / Laravel / MagentoCustom build
od 1 800 zł
netto · po audycie
Wszystko z pakietu Pro
pełna optymalizacja front + back
Zmiany bezpośrednio w kodzie
PHP, JS – refaktoryzacja wolnych funkcji
Niestandardowe platformy
Next.js, Laravel, Magento, custom CMS
Dedykowane rozwiązania cache
Redis, Varnish, edge caching
Pełna dokumentacja zmian
co, gdzie i dlaczego zostało zoptymalizowane
Ciągła opieka

Opieka miesięczna

Dbamy o to, żeby wyniki się utrzymały po optymalizacji. Monitorujemy wydajność, reagujemy na spadki, aktualizujemy WordPress i wtyczki. Ty skupiasz się na biznesie.

Monitoring wydajnościAktualizacje WP i wtyczekReakcja na spadki wynikówMiesięczny raportWsparcie techniczne
300 zł
netto / miesiąc · bez okresu minimalnego
Zamów opiekę →

Wszystkie ceny są cenami netto. Brak ukrytych kosztów i obowiązkowych abonamentów.
Każdą realizację poprzedza krótki audyt – wiemy dokładnie, co da realne efekty na Twojej stronie.

Twoja strona może ładować się
dwa razy szybciej. Sprawdźmy to.

Wolna strona to utraceni klienci — Google to wie i karze za to w wynikach wyszukiwania. Optymalizujemy WordPress, WooCommerce i niestandardowe platformy tak, żeby PageSpeed przestał być problemem.

Każda realizacja zaczyna się od audytu. Wiemy, co da realne efekty na Twojej stronie — nie działamy na ślepo.

Wypełnij formularz — wrócimy z konkretną diagnozą i wyceną.

  • Audyt przed wyceną – bez zobowiązań
  • Raport przed i po z liczbami
  • Bez long-term kontraktów
Pakiet
Strona
Kontakt
Krok 1 z 3
Wybierz pakiet
Nie wiesz który? Dobierzemy go razem po audycie.

Często zadawane pytania

Ile czasu trwa optymalizacja strony?

Zależy od pakietu i stanu wyjściowego, ale w większości przypadków pakiet Start realizujemy w 2–3 dni robocze, pakiet Pro w 4–6 dni. Pakiet Custom wyceniamy indywidualnie po audycie – przy bardziej rozbudowanych wdrożeniach z pracą w kodzie czas wydłuża się do 1–2 tygodni. Każda realizacja zaczyna się od audytu (zazwyczaj 1 dzień), więc wiesz z góry co będzie robione i kiedy to skończysz.

Czy optymalizacja może coś popsuć na mojej stronie?

To jedno z najczęstszych obaw i odpowiemy wprost: każdą zmianę poprzedzamy kopią zapasową. W pakiecie Start i Pro nie ingerujemy bezpośrednio w kod motywu ani pliki PHP – pracujemy na poziomie konfiguracji, wtyczek i serwera, co znacząco ogranicza ryzyko. Przy pakiecie Custom, gdzie wchodzimy w kod, stosujemy środowisko stagingowe przed wdrożeniem na produkcję. Każdy krok jest odwracalny.

O ile może wzrosnąć mój wynik w Google PageSpeed?

To zależy od punktu startowego – im niższy wynik wyjściowy, tym większy skok. Dla stron WordPress z wynikiem poniżej 40 punktów, po pakiecie Pro osiągamy zazwyczaj 60–85 punktów na mobile i 85–95 na desktop. Dla stron z wynikiem 50–60 punktów, sam pakiet Start potrafi podbić wynik do 75–88 na mobile. Konkretne liczby podajemy zawsze w raporcie końcowym – zanim i po. Nie operujemy obietnicami bez pokrycia: jeśli po audycie oceniamy, że potencjał wzrostu jest niewielki, mówimy to wprost.

Czy wyniki optymalizacji się utrzymają, czy strona znów wyhamuje?

Wyniki są trwałe o ile strona nie jest aktywnie rozwijana w sposób, który je degraduje – np. instalowanie kolejnych ciężkich wtyczek, dodawanie nieoptymalizowanych zdjęć, zmiana hostingu na wolniejszy. Dlatego oferujemy opiekę miesięczną: monitorujemy wyniki, reagujemy na spadki i aktualizujemy WordPress oraz wtyczki w bezpieczny sposób. Bez opieki raport zawiera zawsze listę zaleceń, które pozwalają samodzielnie utrzymać efekty.

Czy optymalizacja strony wpływa na pozycje w Google?

Tak, i to bezpośrednio. Core Web Vitals (LCP, INP, CLS) są oficjalnym czynnikiem rankingowym od 2021 roku – Google publicznie potwierdza, że wolne strony są karane w wynikach wyszukiwania. Dodatkowo szybsza strona to niższy współczynnik odrzuceń i dłuższy czas spędzony na stronie – a to sygnały, które algorytm bierze pod uwagę pośrednio. W e-commerce każde 100ms opóźnienia ładowania to mierzalny spadek konwersji – badania Deloitte pokazują, że poprawa szybkości o 0,1s może zwiększyć konwersję nawet o 8%.

Pracujecie tylko z WordPress czy też z innymi platformami?

WordPress i WooCommerce to nasz chleb powszedni i mamy tam największe doświadczenie. Ale w pakiecie Custom obsługujemy też Next.js, Laravel, Magento, PrestaShop i niestandardowe systemy CMS. Kluczowe pytanie przed wycenieniem pracy na custom platformie to dostęp do serwera i kodu – bez tego możemy działać tylko na poziomie Cloudflare i CDN. Zakres zawsze ustalamy po audycie, nie zgadujemy.

Co dokładnie dostaję w raporcie końcowym?

Raport zawiera: zrzuty ekranu z PageSpeed Insights i GTmetrix przed i po optymalizacji, listę wykonanych działań z krótkim wyjaśnieniem co i dlaczego zostało zmienione, wyniki Core Web Vitals (LCP, INP, CLS) dla mobile i desktop, oraz listę rekomendacji kolejnych kroków – jeśli są rzeczy poza zakresem pakietu, które warto zrobić. Raport dostarcz w formacie PDF, czytelny dla osoby bez wiedzy technicznej.

Czy muszę zmieniać hosting żeby skorzystać z optymalizacji?

Nie musisz, ale czasami to rekomendujemy. W pakiecie Start i Pro działamy na istniejącej infrastrukturze – konfigurujemy serwer pod kątem wydajności, ale nie wymagamy migracji. Jeśli hosting jest obiektywnie zbyt słaby i stanowi wąskie gardło (np. shared hosting z limitowanymi zasobami PHP), napiszemy to w raporcie jako rekomendację. Decyzja zawsze należy do Ciebie.

Jaka jest różnica między optymalizacją a dobrą wtyczką cache jak WP Rocket?

WP Rocket i podobne wtyczki to świetne narzędzia – używamy ich sami w procesie optymalizacji. Problem polega na tym, że prawidłowa konfiguracja wtyczki cache to dopiero jeden element układanki. Bez zsynchronizowania jej z ustawieniami serwera, regułami Cloudflare, przetwarzaniem obrazów i zarządzaniem skryptami możesz skończyć z aktywnym WP Rocket i wynikiem 38/100 – bo wtyczka optymalizuje to co może, a reszta infrastruktury ją blokuje. Nasza praca polega na dopasowaniu wszystkich warstw do siebie.

Jak wygląda cały proces od pierwszego kontaktu do końca pracy?

Po wypełnieniu formularza wracamy w ciągu 24 godzin z krótką wstępną diagnozą strony. Następnie ustalamy zakres, wysyłamy zlecenie i po jego akceptacji ruszamy z audytem. Praca odbywa się bez przestoju strony – nie blokujemy dostępu ani nie przełączamy strony w tryb maintenance na czas optymalizacji. Po zakończeniu wysyłamy raport i jesteśmy dostępni na pytania przez 7 dni bez dodatkowych kosztów. Cały proces dla pakietu Start zamyka się zazwyczaj w ciągu tygodnia od pierwszego kontaktu.

Dowiedz się więcej o optymalizacji stron internetowych

Spis treści: 
1. ​​Co to jest optymalizacja wydajności strony?
2. ​Core Web Vitals – co to jest i dlaczego ma znaczenie?
3. ​Wolna strona kosztuje Cię klientów
4. ​Dlaczego WordPress z czasem zwalnia?
5. ​Cloudflare, CDN i cache – jak to działa?
6. ​Optymalizacja obrazów – największa szybka wygrana
7. ​Kiedy wtyczki i cache już nie wystarczą
8. ​Jak sprawdzić wydajność swojej strony?

Na czym polega optymalizacja wydajności strony?

Optymalizacja wydajności strony internetowej to proces systematycznego identyfikowania i eliminowania wszystkiego, co spowalnia ładowanie oraz działanie witryny w przeglądarce użytkownika. Brzmi prosto, ale w praktyce to złożona praca na wielu warstwach jednocześnie – od plików graficznych, przez kod JavaScript i CSS, po konfigurację serwera, bazę danych i sieć dostarczania treści (CDN). Nie ma jednego magicznego przycisku, który przyspiesza stronę. Jest za to kilkanaście obszarów, z których każdy może być wąskim gardłem – i każdy wymaga osobnego podejścia.

Skąd bierze się wolna strona?

Przeglądarka, żeby wyświetlić stronę, musi wykonać dziesiątki – a często setki – zapytań do serwera. Pobiera plik HTML, który odsyła do arkuszy stylów CSS, plików JavaScript, czcionek, obrazów i zewnętrznych zasobów jak Google Analytics czy piksele reklamowe. Każde z tych zapytań to czas. Jeśli plik CSS ma 400 kB zamiast 40 kB, bo nikt go nie zminifikował – przeglądarka czeka. Jeśli zdjęcie w tle sekcji hero ma 4 MB i format JPEG z 2015 roku zamiast nowoczesnego WebP – przeglądarka czeka. Jeśli JavaScript blokuje renderowanie strony zanim użytkownik zdąży cokolwiek zobaczyć – przeglądarka czeka. Zsumuj te czekania i otrzymasz wynik 28/100 w Google PageSpeed, wysoki współczynnik odrzuceń i klientów, którzy zamknęli kartę po dwóch sekundach, nie czekając aż się załaduje.

Co konkretnie obejmuje optymalizacja wydajności?

Można ją podzielić na kilka głównych obszarów. Pierwszym jest optymalizacja zasobów front-end – czyli wszystkiego co przeglądarka pobiera bezpośrednio. To kompresja i konwersja obrazów do formatu WebP lub AVIF, włączenie lazy loadingu (odkładanie ładowania obrazów poza ekranem), minifikacja plików CSS i JavaScript, łączenie małych plików w większe żeby zredukować liczbę zapytań HTTP, oraz usunięcie zasobów blokujących renderowanie – czyli skryptów, które zatrzymują wyświetlanie strony dopóki się nie załadują. Na tym poziomie można bardzo dużo zyskać nawet bez dotykania serwera.

Drugim obszarem jest konfiguracja cache. Cache to mechanizm przechowywania gotowych odpowiedzi – zamiast generować stronę od nowa przy każdym wejściu, serwer oddaje wcześniej przygotowaną wersję. W WordPressie zarządza tym wtyczka taka jak LiteSpeed Cache, W3 Total Cache czy WP Rocket – ale sama instalacja wtyczki to nie wszystko. Liczy się jej konfiguracja: czas przechowywania cache, wykluczenia dla zalogowanych użytkowników i koszyka w WooCommerce, cache obiektów dla bazy danych, preloading kluczowych podstron. Źle skonfigurowany cache może dawać użytkownikom nieaktualne treści albo w ogóle nie działać dla części ruchu.

Trzecim obszarem jest CDN i Cloudflare. Content Delivery Network to sieć serwerów rozproszonych geograficznie, które przechowują statyczne zasoby strony (obrazy, CSS, JS) bliżej użytkownika. Jeśli Twój serwer stoi w Warszawie, a użytkownik otwiera stronę z Wrocławia – różnica jest minimalna. Ale jeśli odwiedzają Cię klienci z całej Europy, CDN potrafi skrócić czas ładowania zasobów o kilkadziesiąt procent. Cloudflare daje też dodatkową warstwę cache na poziomie DNS, ochronę przed atakami DDoS, automatyczną minifikację i możliwość definiowania reguł, które np. omijają cache dla konkretnych ścieżek jak koszyk czy panel klienta.

Czwartym obszarem jest optymalizacja bazy danych i serwera. WordPress przechowuje w bazie danych absolutnie wszystko – posty, ustawienia, metadane, logi rewizji, transient cache. Przez rok aktywnego używania strony tabela wp_options potrafi mieć tysiące wpisów, z których 80% to śmieci po odinstalowanych wtyczkach. Zapytania SQL do takiej bazy są wolne. Optymalizacja obejmuje czyszczenie tabel, indeksowanie, włączenie OPcache na poziomie PHP (mechanizm, który kompiluje kod PHP do postaci gotowej do wykonania zamiast interpretować go od nowa przy każdym zapytaniu), oraz dostrojenie limitów pamięci i timeoutów. Na hostingach współdzielonych często nie masz dostępu do tych ustawień – wtedy jedynym wyjściem jest zmiana serwera lub przejście na VPS z pełną kontrolą.

Piątym obszarem jest optymalizacja kodu – to zakres zarezerwowany dla pakietów Custom, gdzie wyniki narzędzi diagnostycznych wskazują konkretne funkcje PHP lub komponenty JavaScript jako wąskie gardła. Może to być nieefektywna pętla w motywie, zapytanie SQL bez indeksu wykonywane przy każdym ładowaniu strony, albo biblioteka JavaScript ładowana globalnie choć używana tylko na jednej podstronie. Na tym poziomie optymalizacja to już programowanie, nie konfiguracja.

Czym optymalizacja wydajności NIE jest?

To ważne rozróżnienie, bo wiele firm myli pojęcia. Optymalizacja wydajności to nie to samo co optymalizacja SEO w rozumieniu słów kluczowych, linkowania czy treści. Nie polega na zmianie wyglądu strony. Nie wymaga przebudowania jej od zera – choć czasem migracja na lepszy hosting lub szybszy motyw jest efektywniejsza kosztowo niż ratowanie zastałej architektury. Optymalizacja wydajności operuje na istniejącej stronie, poprawiając sposób w jaki jest serwowana, a nie to co prezentuje.

Jak mierzy się efekty optymalizacji?

Głównym narzędziem jest Google PageSpeed Insights, który mierzy wydajność strony w skali 0–100 osobno dla urządzeń mobilnych i desktopowych. Ale sam wynik punktowy to skrót myślowy – ważniejsze są metryki ukryte pod spodem: LCP (Largest Contentful Paint) mierzący jak szybko główna treść strony staje się widoczna, INP (Interaction to Next Paint) mierzący responsywność na kliknięcia i interakcje, oraz CLS (Cumulative Layout Shift) mierzący stabilność układu strony podczas ładowania. Te trzy metryki składają się na Core Web Vitals – zestaw wskaźników, który Google oficjalnie włączyło do algorytmu rankingowego. Uzupełniająco używamy GTmetrix i WebPageTest, które dają bardziej szczegółowy waterfall – wizualizację kolejności i czasu ładowania każdego zasobu, pozwalającą precyzyjnie zlokalizować co blokuje renderowanie.

Dlaczego warto to robić profesjonalnie, a nie samemu?

Teoretycznie każdy może zainstalować WP Rocket i skonfigurować Cloudflare według poradnika z YouTube. Problem polega na tym, że strony nie są identyczne. To co przyspiesza sklep z 200 produktami na WooCommerce może nie zadziałać, albo wręcz zaszkodzić, prostej stronie firmowej z formularzem kontaktowym. Konfiguracja cache dla strony z dynamicznym koszykiem i logowaniem wymaga precyzyjnych wykluczeń – zbyt agresywny cache pokaże zalogowanemu klientowi dane innego użytkownika. Optymalizacja bez zrozumienia architektury konkretnej strony to strzelanie na oślep. Profesjonalne podejście zaczyna się od audytu, który mapuje dokładnie co spowalnia tę konkretną stronę, i dopiero potem wyznacza listę działań z przewidywanym efektem każdego z nich.

Core Web Vitals – co to jest i dlaczego ma znaczenie?

Core Web Vitals to zestaw trzech metryk wydajnościowych, które Google oficjalnie włączyło do algorytmu rankingowego w 2021 roku w ramach aktualizacji Page Experience. Nie są to abstrakcyjne wskaźniki techniczne – każda z nich mierzy konkretne doświadczenie użytkownika podczas wchodzenia na stronę. Szybkość ładowania głównej treści, responsywność na kliknięcia i stabilność układu podczas ładowania. Jeśli Twoja strona wypada źle w tych trzech kategoriach, Google traktuje ją jako gorszą jakościowo – niezależnie od tego jak dobra jest jej treść i linkowanie.

LCP – Largest Contentful Paint

LCP mierzy czas od momentu wejścia na stronę do chwili, gdy największy widoczny element – najczęściej zdjęcie w sekcji hero, baner lub nagłówek H1 – w pełni się załaduje i wyświetli. To metryka, która odpowiada na pytanie: ile czasu mija zanim użytkownik zobaczy coś konkretnego, a nie tylko białą stronę? Google uznaje wynik poniżej 2,5 sekundy za dobry, między 2,5 a 4 sekundy za wymagający poprawy, powyżej 4 sekund za słaby. W praktyce największy wpływ na LCP mają nieoptymalizowane obrazy, wolny czas odpowiedzi serwera (TTFB) i zasoby blokujące renderowanie – czyli skrypty JavaScript ładowane w nagłówku strony, które wstrzymują wyświetlanie czegokolwiek dopóki się nie wykonają.

Jak poprawić LCP?

Najszybsze wygrane to konwersja głównego obrazu hero do formatu WebP, dodanie atrybutu fetchpriority="high" do tego obrazu (sygnalizuje przeglądarce żeby załadowała go jako pierwszy), przeniesienie nieistotnych skryptów z <head> do stopki lub dodanie im atrybutu defer, oraz poprawa TTFB przez włączenie cache serwera lub upgrade hostingu. W wielu przypadkach samo zajęcie się obrazem hero i skryptami blokującymi renderowanie podbija LCP o 1–2 sekundy.

INP – Interaction to Next Paint

INP zastąpiło w marcu 2024 roku starszą metrykę FID (First Input Delay) i mierzy coś znacznie szerszego: responsywność strony na wszystkie interakcje użytkownika przez cały czas wizyty, nie tylko pierwszą. Kliknięcie przycisku, rozwinięcie menu, wpisanie tekstu w pole wyszukiwania – każda z tych akcji jest mierzona jako czas od interakcji do momentu gdy przeglądarka wizualnie na nią reaguje. Dobry wynik to poniżej 200 ms. Zły to powyżej 500 ms – użytkownik klika i nie ma reakcji, co sprawia wrażenie że strona się zawiesiła.

Co psuje INP?

Głównym winowajcą jest tzw. long task na głównym wątku JavaScript – kod, który wykonuje się zbyt długo i blokuje przeglądarkę przed reagowaniem na interakcje. W WordPress często są to ciężkie wtyczki ładujące biblioteki JS globalnie na każdej podstronie, choć używają ich tylko w jednym miejscu. Poprawia się to przez code splitting, lazy loading komponentów JavaScript i audyt wtyczek pod kątem tego co faktycznie dokładają do frontendu.

CLS – Cumulative Layout Shift

CLS mierzy stabilność wizualną strony podczas ładowania. Jeśli załadował się już tekst, ale obrazy jeszcze nie mają zdefiniowanych wymiarów w kodzie – po ich załadowaniu wszystko przeskakuje w dół. Albo baner reklamowy ładuje się z opóźnieniem i przesuwa treść, w którą użytkownik właśnie klikał. CLS liczy sumę wszystkich takich przeskoków i przyznaje wynik – poniżej 0,1 to dobry wynik, powyżej 0,25 to problem. Zły CLS jest irytujący dla użytkownika i karany przez Google.

Jak naprawić CLS?

Rozwiązanie jest stosunkowo proste: każdy obraz i element osadzony (iframe, reklama, widget) musi mieć zdefiniowane atrybuty width i height w HTML albo zarezerwowaną przestrzeń przez CSS (właściwość aspect-ratio). Dzięki temu przeglądarka wie ile miejsca zarezerwować zanim zasób się załaduje i układ strony nie skacze. Problemy z CLS często wychodzą też przy fontach – jeśli przeglądarka najpierw renderuje tekst w foncie systemowym, a potem podmienia go na właściwy, może to powodować subtelne przesunięcia. Rozwiązaniem jest font-display: swap w połączeniu z preloadem czcionek.

Jak sprawdzić swoje Core Web Vitals?

Google udostępnia dwa główne źródła danych. Pierwsze to Google PageSpeed Insights – wpisujesz URL i dostajesz wyniki zarówno z laboratorium (symulowany test) jak i z prawdziwych danych użytkowników zebranych przez Chrome (tzw. dane CrUX, Chrome User Experience Report). Drugie to Google Search Console – zakładka „Wrażenia na stronie" pokazuje jak Core Web Vitals wyglądają w skali całej witryny i wskazuje które URL-e wymagają uwagi. Warto patrzeć na oba źródła: dane laboratoryjne są deterministyczne i łatwiejsze do debugowania, dane rzeczywiste pokazują jak strona działa dla Twoich konkretnych użytkowników na ich konkretnych urządzeniach i połączeniach.

Wolna strona kosztuje Cię klientów

Prędkość ładowania strony to nie kwestia estetyczna ani techniczna fanaberia – to bezpośredni czynnik biznesowy. Badania Google pokazują, że 53% użytkowników mobilnych opuszcza stronę, jeśli ładuje się dłużej niż 3 sekundy. Nie czekają, nie próbują odświeżyć – po prostu wychodzą i otwierają wynik numer dwa w Google. Jeśli prowadzisz sklep, stronę usługową lub landing page, każda sekunda opóźnienia to realnie utracone zapytania i sprzedaż.

Konwersja spada szybciej niż myślisz

Deloitte przebadało wpływ szybkości stron na konwersję w e-commerce i wyniki są jednoznaczne: poprawa czasu ładowania o zaledwie 0,1 sekundy przekłada się na wzrost konwersji o 8%. To nie jest wynik dla gigantów z milionami sesji – efekt jest proporcjonalny i działa dla każdej skali biznesu. Zależność jest prosta: szybsza strona to mniejszy opór przed dokonaniem kolejnego kroku, czy to wypełnieniem formularza, dodaniem produktu do koszyka, czy kliknięciem w numer telefonu.

Bounce rate i co z niego wynika

Współczynnik odrzuceń (bounce rate) to odsetek użytkowników, którzy wchodzą na stronę i wychodzą bez jakiejkolwiek interakcji. Wolna strona winduje ten wskaźnik w górę, bo część odwiedzających odpada jeszcze zanim strona się w pełni załaduje. Wysoki bounce rate to sygnał dla Google, że strona nie spełnia oczekiwań użytkownika – co przekłada się na gorsze pozycje, mniej ruchu organicznego i spiralę, z której trudno wyjść samą treścią czy linkowaniem.

W e-commerce każda sekunda ma cenę

Sklepy internetowe odczuwają skutki wolnej strony najboleśniej. Użytkownik, który czeka na załadowanie karty produktu, traci cierpliwość i impuls zakupowy jednocześnie. Porzucone koszyki rzadko wracają. Amazon szacował, że każde 100ms opóźnienia kosztuje ich 1% sprzedaży – przy ich skali to miliardy, ale mechanizm działa tak samo dla sklepu z obuwiem czy suplementami. Wolny checkout to prosta droga do porzuconego zamówienia na ostatnim kroku, gdy użytkownik już prawie kupił.

Zaufanie i pierwsze wrażenie

Szybkość strony wpływa też na percepcję marki. Wolno ładująca się witryna podświadomie komunikuje zaniedbanie – jeśli firma nie zadba o własną stronę, jak zadba o klienta? To szczególnie istotne w branżach, gdzie wiarygodność i profesjonalizm są kluczowym argumentem sprzedażowym: prawo, finanse, medycyna, usługi B2B. Pierwsze wrażenie robi się raz – i często dzieje się to zanim użytkownik przeczyta pierwsze zdanie.

Dlaczego WordPress z czasem zwalnia?

WordPress to najpopularniejszy system CMS na świecie – napędza ponad 40% wszystkich stron internetowych. Jego siła to elastyczność i ogromny ekosystem wtyczek, ale to właśnie ta elastyczność jest głównym powodem, dla którego strony zbudowane na WordPressie potrafią z czasem dramatycznie tracić na wydajności. Nie dzieje się to z dnia na dzień – to powolna degradacja, która zazwyczaj umyka uwadze właściciela strony do momentu gdy ktoś zwróci uwagę, że „strona strasznie wolno działa".

Wtyczki – największy sprawca

Przeciętna strona WordPress ma zainstalowanych od 20 do 40 wtyczek. Każda z nich dokłada coś do ładowania strony: własne pliki CSS, własne pliki JavaScript, własne zapytania do bazy danych przy każdym wejściu na podstronę. Problem w tym, że większość wtyczek ładuje swoje zasoby globalnie – na każdej podstronie, niezależnie od tego czy są tam potrzebne. Wtyczka do formularza kontaktowego ładuje swój JavaScript na stronie głównej, w blogu i w sklepie, choć formularz jest tylko w zakładce „Kontakt". Suwak zdjęć dokłada bibliotekę liczącą 150 kB do każdej podstrony. Zsumuj to przez 30 wtyczek i masz setki kilobajtów zbędnych zasobów ładowanych przy każdym wejściu na stronę.

Drugi problem to jakość samych wtyczek. Ekosystem WordPress jest otwarty, co oznacza że każdy może opublikować wtyczkę – i poziom optymalizacji kodu bywa bardzo różny. Popularna wtyczka z milionem aktywnych instalacji może wykonywać dziesiątki zbędnych zapytań SQL przy każdym ładowaniu strony, blokować główny wątek PHP albo ładować całą bibliotekę jQuery tylko po to żeby obsłużyć jedno rozwijane menu. Samo sprawdzenie aktywnych wtyczek w narzędziach do profilowania zapytań (np. Query Monitor) potrafi ujawnić, że jedna konkretna wtyczka odpowiada za 60% czasu generowania strony.

Baza danych rośnie i nikt jej nie sprząta

WordPress przechowuje w bazie MySQL absolutnie wszystko. Każda wersja posta, każde ustawienie każdej wtyczki, logi, tymczasowe dane cache (tzw. transients), metadane użytkowników i produktów, statystyki. Tabela wp_options ze świeżej instalacji ma kilkaset wpisów. Po dwóch latach aktywnego używania strony z kilkoma zmienianymi wtyczkami potrafi mieć ich kilkadziesiąt tysięcy – z czego zdecydowana większość to osierocone dane po wtyczkach, które zostały odinstalowane, ale nie posprzątały po sobie. Zapytania do takiej tabeli są wolne, bo MySQL musi przeszukać dziesiątki tysięcy wierszy zamiast kilkuset. Do tego dochodzą rewizje postów – WordPress domyślnie zapisuje nieskończoną historię wersji każdego artykułu. Sklep z 500 produktami, gdzie każdy był edytowany kilkanaście razy, może mieć w tabeli wp_posts kilka tysięcy wpisów będących wyłącznie historycznymi rewizjami, nigdy niewyświetlanymi nikomu.

Motywy, które robią za dużo

Page buildery takie jak Elementor, Divi czy WPBakery dają ogromną swobodę projektowania bez znajomości kodu, ale mają swoją cenę wydajnościową. Generują rozbudowane struktury HTML z dziesiątkami zagnieżdżonych divów, ładują własne biblioteki CSS i JS liczące setki kilobajtów, i często uniemożliwiają sensowną optymalizację bez głębokiej znajomości ich wewnętrznych mechanizmów. Motyw kupiony na ThemeForest za 59 dolarów, reklamowany jako „all-in-one", często bundluje kilkanaście bibliotek i funkcji których nigdy nie użyjesz, ale które i tak ładują się przy każdym wejściu na stronę. Lekki, dobrze napisany motyw w połączeniu z oszczędnym page builderem – albo bez niego – to jedna z najbardziej efektywnych optymalizacji jakie można zrobić, choć wymaga migracji treści.

Hosting, który nie nadąża

WordPress jest dynamiczny – każde wejście na stronę (bez cache) generuje zapytanie do bazy danych, wykonuje kod PHP i dopiero potem oddaje gotowy HTML do przeglądarki. Na tanim hostingu współdzielonym zasoby serwera są dzielone między dziesiątki lub setki stron jednocześnie. Gdy sąsiad na tym samym serwerze dostaje nagły ruch, Twoja strona zwalnia – bo dostaje mniej mocy obliczeniowej. Limity pamięci PHP ustawione na 64 MB zamiast 256 MB powodują że duże operacje kończą się błędem albo drastycznym zwolnieniem. Brak OPcache sprawia że PHP interpretuje ten sam kod od nowa przy każdym zapytaniu, zamiast korzystać z skompilowanej wersji przechowywanej w pamięci. To obszar, na który właściciel strony często nie ma wpływu bez zmiany planu hostingowego lub przejścia na VPS.

Aktualizacje, które zmieniają zachowanie

WordPress, motywy i wtyczki są regularnie aktualizowane – i choć zazwyczaj aktualizacje poprawiają bezpieczeństwo i wydajność, zdarza się że nowa wersja wtyczki zmienia jej zachowanie w sposób, który spowalnia stronę. Nowy feature domyślnie włączony, dodatkowe zapytanie Ajax, zmiana sposobu ładowania zasobów. Strona działała dobrze przez rok, po aktualizacji trzech wtyczek jednocześnie wynik PageSpeed spada o 20 punktów – i bez monitorowania trudno nawet stwierdzić co jest przyczyną. Właśnie dlatego w ramach opieki miesięcznej aktualizacje przeprowadzamy kontrolowanie, z weryfikacją wyników po każdej zmianie, a nie hurtem raz na kwartał.

Cloudflare, CDN i cache – jak to działa?

Żeby zrozumieć dlaczego Cloudflare i CDN tak bardzo przyspieszają strony, trzeba najpierw zrozumieć co dzieje się bez nich. Użytkownik wpisuje adres strony w przeglądarce. Przeglądarka wysyła zapytanie do serwera – fizycznej maszyny stojącej w konkretnym miejscu na świecie. Serwer generuje odpowiedź, odsyła ją z powrotem, przeglądarka zaczyna renderować stronę i wysyła kolejne dziesiątki zapytań po obrazy, CSS, JavaScript i czcionki. Każde z tych zapytań podróżuje fizyczną siecią – im dalej serwer, tym dłużej trwa ta podróż. To opóźnienie nazywa się latency i jest nieusuwalne – nawet przy idealnej infrastrukturze sygnał nie może podróżować szybciej niż prawa fizyki pozwalają. Jedynym sposobem na jego redukcję jest zbliżenie serwera do użytkownika.

CDN – treść bliżej użytkownika

Content Delivery Network to sieć dziesiątek lub setek serwerów rozmieszczonych w różnych lokalizacjach geograficznych – nazywanych węzłami lub punktami obecności (PoP, Points of Presence). Kiedy użytkownik z Poznania wchodzi na stronę, której główny serwer stoi w Warszawie, różnica jest pomijalnie mała. Ale jeśli ta sama strona obsługuje klientów z Niemiec, Wielkiej Brytanii czy Skandynawii, każde zapytanie do zasobów statycznych – obrazów, plików CSS, JavaScript – musi podróżować do Warszawy i z powrotem. CDN rozwiązuje ten problem kopiując te zasoby do węzłów w Frankfurcie, Amsterdamie, Londynie i Sztokholmie. Użytkownik z Berlina pobiera obraz z serwera 15 ms od niego, a nie z Warszawy oddalonej o 80 ms. Przy stronie z kilkudziesięcioma zasobami te różnice się sumują do zauważalnego skroku w czasie ładowania.

Cloudflare jest dziś najpopularniejszym dostawcą CDN dla małych i średnich stron internetowych – i słusznie, bo darmowy plan oferuje naprawdę dużo. Sieć Cloudflare liczy ponad 300 węzłów na całym świecie. Konfiguracja sprowadza się do zmiany serwerów DNS domeny na serwery Cloudflare – od tego momentu cały ruch do strony przechodzi przez infrastrukturę Cloudflare, która obsługuje go z najbliższego węzła.

Cache – serwowanie gotowych odpowiedzi

Cache to mechanizm przechowywania wcześniej wygenerowanych odpowiedzi i oddawania ich kolejnym użytkownikom bez ponownego przetwarzania. Istnieje na kilku poziomach jednocześnie i każdy z nich jest ważny.

Cache przeglądarki – zasoby statyczne jak logo, czcionki czy arkusze CSS są pobierane przez przeglądarkę raz i przechowywane lokalnie przez określony czas (zdefiniowany przez nagłówki HTTP Cache-Control i Expires). Przy kolejnych wizytach przeglądarka nie pobiera ich ponownie z serwera – bierze gotowe z dysku. Poprawna konfiguracja nagłówków cache potrafi sprawić, że ponowne wejście na stronę ładuje się błyskawicznie, bo 80% zasobów jest już lokalnie.

Cache serwera – WordPress bez cache generuje każdą stronę dynamicznie: wykonuje zapytania SQL, przetwarza kod PHP, składa HTML i dopiero wtedy odsyła odpowiedź. Dla strony z dużym ruchem to ogromne obciążenie serwera. Cache serwera przerywa ten cykl: po pierwszym wejściu gotowy HTML jest zapisywany na dysku lub w pamięci, a kolejni użytkownicy dostają tę gotową wersję bezpośrednio, z pominięciem PHP i bazy danych. Czas generowania strony spada z setek milisekund do kilku lub kilkunastu.

Cache Cloudflare – Cloudflare może cache'ować nie tylko zasoby statyczne ale przy odpowiedniej konfiguracji również gotowe odpowiedzi HTML dla niezalogowanych użytkowników. Oznacza to, że część ruchu w ogóle nie dociera do Twojego serwera – Cloudflare odpowiada z własnej pamięci ze swojego węzła. To radykalnie odciąża hosting i skraca TTFB (Time to First Byte) do minimum.

Reguły i wykluczenia – gdzie cache przeszkadza

Cache jest potężnym narzędziem, ale wymaga starannej konfiguracji wykluczeń – i tu właśnie popełnia się najwięcej błędów. W sklepie WooCommerce strony produktów i treści statyczne powinny być agresywnie cache'owane. Ale koszyk, strona kasy, strona „moje konto" i wszelkie podstrony dla zalogowanych użytkowników muszą być z cache wykluczone – bo te strony są dynamiczne i unikalne dla każdego użytkownika. Podanie zalogowanemu klientowi ze strony cache zawartości koszyka innego użytkownika to błąd, który zdarza się przy zbyt agresywnej konfiguracji bez właściwych wykluczeń. Dobrze skonfigurowany Cloudflare ma zdefiniowane reguły Page Rules lub Cache Rules, które precyzyjnie określają co cache'ować, na jak długo i dla kogo.

Minifikacja, kompresja i HTTP/2

Cloudflare oferuje też automatyczną minifikację HTML, CSS i JavaScript – usuwa białe znaki, komentarze i zbędne znaki z plików bez zmiany ich funkcjonalności, redukując ich rozmiar. Włącza kompresję Brotli lub Gzip dla wszystkich zasobów tekstowych – przeglądarka otrzymuje skompresowany plik i rozpakuje go lokalnie, co jest wielokrotnie szybsze niż pobieranie pełnej wersji. Cloudflare obsługuje też HTTP/2 i HTTP/3, które pozwalają przeglądarce pobierać wiele zasobów jednocześnie przez jedno połączenie zamiast kolejkować je jedno po drugim jak w starszym HTTP/1.1. Wszystko to dzieje się automatycznie po podpięciu domeny pod Cloudflare, bez żadnych zmian na serwerze.

Optymalizacja obrazów – największa szybka wygrana

Obrazy są zazwyczaj największym składnikiem wagowym strony internetowej. Na przeciętnej witrynie WordPress odpowiadają za 50–70% całkowitego rozmiaru pobieranych zasobów. To sprawia, że optymalizacja obrazów jest jednocześnie najłatwiejszym i najszybszym sposobem na poprawę wydajności – efekty są niemal natychmiastowe i nie wymagają ingerencji w kod ani konfigurację serwera. Mimo to zdecydowana większość stron, które trafiają do nas na audyt, ma obrazy w ogóle nieoptymalizowane: oryginalne pliki JPEG wrzucone prosto z aparatu lub od grafika, ważące po 3–8 MB, wyświetlane w kontenerze o szerokości 600 pikseli.

Format ma ogromne znaczenie – WebP i AVIF

Przez lata standardem w internecie był JPEG dla fotografii i PNG dla grafik z przezroczystością. Oba formaty mają swoje lata i nie zostały zaprojektowane z myślą o współczesnych prędkościach łącza i rozdzielczościach ekranów. WebP, opracowany przez Google, oferuje kompresję o 25–35% lepszą niż JPEG przy identycznej lub wyższej jakości wizualnej. Ten sam obraz, który w JPEG waży 400 kB, w WebP waży 260–280 kB bez zauważalnej różnicy dla ludzkiego oka. AVIF – jeszcze nowszy format – potrafi osiągnąć kompresję o 50% lepszą niż JPEG, choć jego wsparcie w starszych przeglądarkach jest wciąż ograniczone. Praktyczne podejście to serwowanie WebP jako domyślnego formatu z fallbackiem do JPEG dla starszych przeglądarek – tag HTML <picture> pozwala to obsłużyć elegancko bez żadnego JavaScript.

W WordPress konwersja do WebP odbywa się automatycznie przez wtyczki takie jak ShortPixel, Imagify czy Cloudflare Polish. Od wersji 5.8 WordPress natywnie obsługuje WebP jako format uploadu, ale samo wgranie pliku w WebP nie wystarczy – trzeba zadbać o to żeby wszystkie miniatury generowane przez WordPress (a jest ich zazwyczaj kilka rozmiarów dla każdego obrazu) też były w odpowiednim formacie i rozmiarze.

Wymiary i skalowanie po stronie przeglądarki

Jeden z najczęstszych błędów to wgrywanie obrazów w oryginalnych wymiarach i poleganie na tym że przeglądarka je pomniejszy przez CSS. Wgrywasz zdjęcie 4000×3000 pikseli, ustawiasz w CSS max-width: 800px i myślisz że problem rozwiązany. Przeglądarka wyświetla obraz w 800 pikselach – ale pobiera pełne 4000 pikseli. Skalowanie odbywa się lokalnie, ale pobieranie jest pełne. Obrazy powinny być wgrywane lub automatycznie przycinane do rozmiarów faktycznie używanych w layoucie. WordPress robi to przez system miniaturek, ale wymaga poprawnej konfiguracji – zdefiniowania rozmiarów odpowiadających rzeczywistym miejscom użycia w motywie, a nie tylko domyślnych wartości.

Do tego dochodzi kwestia ekranów Retina i wysokiej rozdzielczości (HiDPI). Na takich ekranach przeglądarka potrzebuje obrazu o dwukrotnie większych wymiarach niż kontener w CSS żeby wyglądał ostro. Atrybut srcset pozwala dostarczyć przeglądarce kilka wersji obrazu w różnych rozmiarach – przeglądarka sama wybiera właściwy w zależności od gęstości pikseli i rozmiarów okna. Poprawna implementacja srcset to balans między ostrością na wszystkich urządzeniach a niepotrzebnym pobieraniem gigantycznych plików na małych ekranach.

Lazy loading – ładuj tylko to co widoczne

Domyślnie przeglądarka pobiera wszystkie obrazy na stronie od razu podczas ładowania – nawet te, które są głęboko na dole i użytkownik może nigdy do nich nie dotrzeć. Lazy loading odkłada pobieranie obrazów poza aktualnym widokiem (viewport) do momentu gdy użytkownik faktycznie do nich dotrze scrollując. Implementacja jest prosta – atrybut loading="lazy" w tagu <img> – i jest natywnie obsługiwana przez wszystkie nowoczesne przeglądarki bez żadnych bibliotek JavaScript. Efekt to znaczące zmniejszenie rozmiaru danych pobieranych przy pierwszym wejściu na stronę, co bezpośrednio przekłada się na LCP i ogólny czas ładowania.

Ważna uwaga: lazy loading nie powinien być stosowany do obrazów widocznych od razu po załadowaniu strony – czyli głównego obrazu hero, logo i wszystkiego w górnej części ekranu (above the fold). Dla tych elementów priorytetem jest jak najszybsze załadowanie, więc używamy atrybutu fetchpriority="high" który sygnalizuje przeglądarce żeby pobrała je jako pierwsze, jeszcze zanim przeanalizuje resztę strony.

Kompresja – jakość bez zbędnych danych

Każdy plik graficzny zawiera metadane: informacje o aparacie, lokalizację GPS, profil kolorów, datę wykonania. Dla użytkownika strony są one całkowicie bezużyteczne, ale potrafią dodawać kilkadziesiąt kilobajtów do każdego pliku. Usunięcie metadanych (tzw. strip metadata) to jedno z pierwszych działań przy optymalizacji obrazów. Do tego dochodzi właściwa kompresja stratna lub bezstratna – w zależności od rodzaju obrazu. Fotografie znoszą kompresję stratną bez zauważalnej utraty jakości przy ustawieniu 75–85% jakości JPEG. Grafiki z płaskimi kolorami, ikony i ilustracje lepiej kompresują się bezstratnie lub jako SVG jeśli to możliwe. SVG dla ikon i prostych grafik to osobna kategoria – plik SVG to kod XML opisujący kształty wektorowe, często kilkadziesiąt razy lżejszy niż odpowiadający mu PNG, i idealnie ostry na każdej rozdzielczości ekranu.

Kiedy wtyczki i cache już nie wystarczą

Jest pewien próg, po którego przekroczeniu standardowy zestaw narzędzi – wtyczka cache, Cloudflare, optymalizacja obrazów – przestaje wystarczać. Można skonfigurować WP Rocket perfekcyjnie, wdrożyć Cloudflare z kompletnymi regułami, skompresować każdy obraz do WebP i nadal patrzeć na wynik 45/100 w PageSpeed z TTFB liczonym w sekundach. Dzieje się tak gdy problem leży głębiej – w warstwie, do której wtyczki nie mają dostępu: w kodzie aplikacji, konfiguracji serwera na poziomie systemu operacyjnego, architekturze bazy danych lub sposobie generowania odpowiedzi przez PHP.

Czas odpowiedzi serwera (TTFB) jako wskaźnik

Time to First Byte – czas od wysłania zapytania przez przeglądarkę do otrzymania pierwszego bajtu odpowiedzi z serwera – jest kluczowym sygnałem diagnostycznym. Dobry TTFB to poniżej 200 ms, akceptowalny to poniżej 600 ms. Jeśli TTFB Twojej strony wynosi 1,5–3 sekundy, żadna optymalizacja front-endowa tego nie naprawi – cache obrazów i minifikacja CSS działają dopiero po tym jak serwer odpowie. Wysoki TTFB wskazuje że problem jest po stronie serwera: zbyt wolne wykonywanie PHP, przeciążona baza danych, brak OPcache, niewystarczające zasoby hostingu lub nieefektywny kod aplikacji.

OPcache i konfiguracja PHP

PHP jest językiem interpretowanym – normalnie przy każdym zapytaniu do strony serwer musi wczytać pliki PHP, sparsować je i skompilować do kodu bajtowego, który dopiero jest wykonywany. OPcache eliminuje ten krok przechowując skompilowany kod bajtowy w pamięci operacyjnej serwera. Przy następnym zapytaniu PHP pomija etap parsowania i kompilacji, co skraca czas wykonywania nawet o 50–70%. Na większości hostingów współdzielonych OPcache jest włączony, ale jego konfiguracja – wielkość pamięci, czas wygaśnięcia, liczba plików – jest często ustawiona na minimum. Na VPS i serwerach dedykowanych dostrojenie OPcache do specyfiki konkretnej aplikacji to jedna z pierwszych i najbardziej opłacalnych interwencji na poziomie serwera.

Do tego dochodzą ustawienia samego PHP: limit pamięci, maksymalny czas wykonania, obsługa sesji, wersja PHP. WordPress działa najwydajniej na PHP 8.1 lub nowszym – przejście z PHP 7.4 na 8.1 to mierzalny wzrost wydajności bez żadnych innych zmian, bo nowe wersje PHP są po prostu szybsze w wykonywaniu kodu. Wiele stron tkwi na starszych wersjach PHP z obawy przed niekompatybilnością wtyczek lub z braku wiedzy że aktualizacja jest możliwa.

Baza danych – zapytania jako wąskie gardło

W bardziej rozbudowanych stronach i sklepach problemem przestaje być sama ilość danych w bazie, a stają się nim konkretne zapytania SQL wykonywane przy każdym ładowaniu strony. Wtyczka Query Monitor w trybie debugowania potrafi pokazać że jedna podstrona wykonuje 200 zapytań SQL, z których kilkanaście trwa po 300–500 ms każde. Zazwyczaj winowajcami są zapytania bez indeksów – MySQL musi przeskanować całą tabelę zamiast skorzystać z indeksu i znaleźć wynik natychmiast. Dodanie odpowiednich indeksów do tabel, optymalizacja zapytań generowanych przez motywy i wtyczki, oraz wdrożenie cache obiektów przez Redis lub Memcached (mechanizm przechowujący wyniki zapytań SQL w pamięci RAM, eliminujący ich ponowne wykonywanie) potrafi zredukować czas generowania strony z 2 sekund do 200 ms.

Wolny kod aplikacji

Kiedy narzędzia profilujące wskazują na konkretne funkcje PHP lub komponenty JavaScript jako źródło problemów, wkraczamy w obszar optymalizacji kodu. W WordPress może to być nieefektywna pętla w motywie wykonująca zapytania do bazy w każdej iteracji zamiast pobrać wszystkie dane jednym zapytaniem, funkcja hooka uruchamiana przy każdym ładowaniu strony która wykonuje kosztowne operacje, albo fragment kodu legacy który oblicza coś synchronicznie co powinno być cache'owane lub wykonywane asynchronicznie. W niestandardowych platformach – Next.js, Laravel, Magento – problemy mogą być bardziej złożone: nieoptymalne renderowanie po stronie serwera, brakujące cache na poziomie aplikacji, niezoptymalizowane relacje w ORM generujące problem N+1 zapytań.

Redis i dedykowane rozwiązania cache

Na poziomie enterprise i przy dużym ruchu standardowy cache plikowy WordPressa przestaje wystarczać. Redis to baza danych działająca w pamięci RAM, używana jako cache obiektów – przechowuje wyniki zapytań SQL, skompilowane fragmenty stron i dane sesji w pamięci operacyjnej serwera, skąd są odczytywane w mikrosekundach. Varnish to z kolei reverse proxy cache – siedzi przed serwerem webowym i odpowiada na zapytania HTTP bezpośrednio z pamięci, zanim w ogóle dotrą do PHP i WordPress. Dla sklepów WooCommerce z tysiącami produktów i setkami jednoczesnych użytkowników te rozwiązania to nie luksus – to konieczność. Konfiguracja Redisa i Varnisha wykracza daleko poza zakres jakiejkolwiek wtyczki i wymaga dostępu do serwera oraz znajomości jego architektury.

Kiedy warto rozważyć migrację

Czasem po pełnym audycie uczciwa odpowiedź brzmi: ten serwer lub ta architektura nie pozwolą osiągnąć dobrych wyników bez fundamentalnej zmiany infrastruktury. Hosting współdzielony z limitami PHP uniemożliwiającymi włączenie OPcache i Redis, stara wersja MySQL bez możliwości aktualizacji, serwer fizycznie zlokalizowany na innym kontynencie niż większość użytkowników – to bariery, których optymalizacja aplikacji nie przeskoczy. W takich przypadkach migracja na VPS lub serwer dedykowany z pełną kontrolą nad konfiguracją jest kosztowo efektywniejsza niż próba wyciśnięcia maksimum z ograniczonej infrastruktury. W raporcie zawsze wskazujemy takie sytuacje wprost – bo lepiej wiedzieć to przed zamówieniem optymalizacji niż po.

Jak sprawdzić wydajność swojej strony?

Zanim zlecisz optymalizację – albo zdecydujesz się zrobić ją samodzielnie – powinieneś wiedzieć z czym dokładnie masz do czynienia. Wynik 34/100 w PageSpeed to nie diagnoza, to tylko sygnał że coś jest nie tak. Żeby wiedzieć co konkretnie spowalnia Twoją stronę i w jakiej kolejności się tym zajmować, potrzebujesz kilku narzędzi, które razem dają pełny obraz sytuacji.

Google PageSpeed Insights – punkt startowy

PageSpeed Insights (pagespeed.web.dev) to pierwsze narzędzie po które sięga każdy – i słusznie, bo jest darmowe, proste w obsłudze i pochodzi bezpośrednio od Google. Wpisujesz URL, czekasz kilkanaście sekund i dostajesz wynik 0–100 osobno dla mobile i desktop. Ale sam wynik to wierzchołek góry lodowej – wartość diagnostyczna tkwi w sekcjach poniżej. Zakładka „Diagnostyka" pokazuje konkretne problemy z szacowanym oszczędnościami w sekundach: „Usuń zasoby blokujące renderowanie – potencjalna oszczędność 1,8 s", „Prawidłowe rozmiary obrazów – potencjalna oszczędność 2,3 MB", „Włącz kompresję tekstu – potencjalna oszczędność 340 ms". To gotowa lista priorytetów.

Ważna rzecz, którą wiele osób pomija: PageSpeed Insights pokazuje dwa rodzaje danych. Dane laboratoryjne to symulowany test na kontrolowanym urządzeniu i łączu – deterministyczny, powtarzalny, dobry do porównywania zmian. Dane rzeczywiste (sekcja „Dane terenowe") to zagregowane wyniki z przeglądarek Chrome użytkowników odwiedzających Twoją stronę w ostatnich 28 dniach – pokazują jak strona faktycznie działa dla prawdziwych ludzi na ich urządzeniach i połączeniach. Strona może dobrze wypaść w laboratorium a słabo w danych rzeczywistych – albo odwrotnie. Obie perspektywy są istotne.

GTmetrix – waterfall i głębsza analiza

GTmetrix (gtmetrix.com) daje to czego brakuje w PageSpeed Insights: szczegółowy waterfall – wykres kaskadowy pokazujący każdy zasób pobierany przez stronę, w jakiej kolejności, jak długo trwa jego pobieranie i czy blokuje ładowanie pozostałych elementów. Na waterfalle jednym rzutem oka widać czy problem to jeden ciężki obraz, czy dwadzieścia małych zapytań do zewnętrznych serwisów, czy skrypt blokujący renderowanie przez 2 sekundy. GTmetrix pozwala też wybrać lokalizację serwera testowego – testuj zawsze z lokalizacji najbliższej Twoim użytkownikom, bo wyniki z serwera w Dallas dla polskiej strony będą zafałszowane przez opóźnienie sieciowe. W darmowym planie dostajesz testy z kilku lokalizacji i historię wyników, co pozwala śledzić czy zmiany na stronie poprawiają czy degradują wydajność.

Google Search Console – dane dla całej witryny

PageSpeed Insights i GTmetrix testują pojedyncze URL-e. Google Search Console (search.google.com/search-console) pokazuje wydajność Core Web Vitals dla całej witryny w skali. Zakładka „Wrażenia na stronie" i sekcja „Core Web Vitals" prezentuje pogrupowane URL-e z problemami – „X stron z problemem z LCP", „Y stron z problemem z CLS" – bazując na rzeczywistych danych Chrome. To nieocenione narzędzie gdy strona ma setki podstron, bo wskazuje które sekcje wymagają uwagi i czy problem jest izolowany (np. tylko strony produktów) czy globalny. Search Console wysyła też powiadomienia mailowe gdy wykryje nowe problemy z Core Web Vitals, co pozwala reagować zanim Google zdąży uwzględnić degradację w rankingach.

WebPageTest – dla zaawansowanych

WebPageTest (webpagetest.org) to narzędzie dla tych, którzy chcą wyjść poza to co oferują poprzednie. Pozwala symulować konkretne urządzenie i łącze (np. iPhone 14 na sieci 4G), testować z wielu lokalizacji jednocześnie, nagrywać wideo ładowania strony klatka po klatce i porównywać je wizualnie – co jest szczególnie przydatne przy demonstrowaniu efektów optymalizacji klientowi. WebPageTest generuje też metryki, których nie znajdziesz gdzie indziej: Speed Index (jak szybko treść jest wizualnie kompletna), Fully Loaded Time (kiedy absolutnie wszystko na stronie skończyło się ładować), oraz szczegółowy podział na fazy połączenia dla każdego zasobu. Dla zaawansowanej diagnostyki, szczególnie przy problemach trudnych do zlokalizowania standardowymi narzędziami, WebPageTest jest niezastąpiony.

Chrome DevTools – praca bezpośrednio w przeglądarce

Wszystkie wymienione narzędzia zewnętrzne mają jedną wadę: testują stronę z zewnątrz i nie mają dostępu do kontekstu przeglądarki użytkownika. Chrome DevTools – wbudowane narzędzia deweloperskie dostępne po wciśnięciu F12 – pozwalają analizować wydajność bezpośrednio w przeglądarce. Zakładka Network pokazuje waterfall w czasie rzeczywistym z pełnymi szczegółami każdego zapytania. Zakładka Performance nagrywia co przeglądarka robi podczas ładowania strony z podziałem na milisekundy: parsing HTML, wykonywanie JavaScript, renderowanie CSS, layout, malowanie – i wskazuje gdzie są długie zadania blokujące główny wątek. Zakładka Lighthouse (wbudowana wersja tego samego silnika co PageSpeed Insights) pozwala uruchomić pełny audyt bezpośrednio w przeglądarce. Dla dewelopera szukającego konkretnej przyczyny problemu DevTools jest precyzyjnym skalpelem, gdzie zewnętrzne narzędzia są szerokopędzlowym pędzlem.

Jak interpretować wyniki i co robić dalej

Zebrane dane z tych narzędzi dają trzy rodzaje informacji: co jest problemem, jak duży jest jego wpływ na wydajność i jak trudno go naprawić. Dobra strategia optymalizacji zaczyna się od posortowania problemów według stosunku potencjalnego efektu do trudności wdrożenia. Nieoptymalizowane obrazy to zazwyczaj wysoki efekt i niski próg wdrożenia – pierwsze do zrobienia. Refaktoryzacja wolnego zapytania SQL w niestandardowej wtyczce to wysoki efekt ale też wysoka trudność – wymaga programisty i testów. Usunięcie jednej zbędnej wtyczki ładującej 200 kB JavaScript to szybka wygrana – warto zrobić od razu.

Jeśli samodzielna interpretacja wyników sprawia trudność albo nie masz pewności od czego zacząć – dokładnie po to jest audyt, który robimy przed każdą realizacją. Mapujemy co spowalnia konkretnie Twoją stronę, szacujemy efekt każdej interwencji i proponujemy zakres pracy z realistycznym przewidywaniem wyników. Bez zgadywania i bez listy działań wziętej z generycznego poradnika.

SPRAWDŹ WYDAJNOŚĆ SWOJEJ STRONY