Optymalizacja kodu strony internetowej – na czym polega?
Dobra strona stoi na odpowiednio zoptymalizowanym kodzie. Plik HTML z nieczytelną strukturą czy kod JS przeładowany zbędnymi skryptami będą tylko spowalniać ładowanie strony i utrudniać jej ocenę przez roboty Google – więc lepiej tego uniknąć. W tym wpisie powiemy więcej o tym, na czym polega optymalizacja kodu strony internetowej (także po stronie serwera) i jakie techniki obejmuje.

Optymalizacja kodu strony – na czym polega i dlaczego jest kluczowa?
Optymalizacja kodu strony – na czym polega i dlaczego jest kluczowa?
Optymalizacja kodu strony polega na uporządkowaniu i usprawnianiu całej warstwy technicznej witryny tak, aby działała szybciej, stabilniej, ale też była lepiej przygotowana na dalszy rozwój. Powinna obejmować nie tylko „czyszczenie” kodu HTML, ale również usprawnienia w stylach CSS, skryptach JavaScript, sposobie ładowania multimediów oraz konfiguracji serwera.
Dlaczego jest to takie ważne?

- Szybsze ładowanie strony = lepsze doświadczenia użytkownika. Każda dodatkowa sekunda opóźnienia oznacza spadek współczynnika konwersji i to nawet o 20%, co pokazało badanie przeprowadzone przez Google i SOASTA. W tym samym raporcie przykuwa zresztą uwagę jeszcze jedna liczba – prawdopodobieństwo, że użytkownik opuści stronę (bounce rate) wzrasta o 32%, gdy czas ładowania wydłuża się z 1 sekundy do… „zaledwie” 3 sekund. A biorąc pod uwagę tendencje w zachowaniach użytkowników i fakt, że badanie pochodzi z 2017 roku, dziś te liczby byłyby zapewne jeszcze wyższe.
- Algorytmy Google biorą pod uwagę wydajność strony przy ocenie jej jakości w ramach Core Web Vitals. Szybkość ładowania jest de facto jednym z najważniejszych czynników rankingowych, więc lepiej zoptymalizowany kod to większe szanse na wysokie pozycje w wynikach wyszukiwania.
- Do tego dochodzi jeszcze kwestia… kosztów. Dobrze zoptymalizowane strony stanowią mniejsze obciążenie dla serwera, zużywają mniej zasobów i o wiele łatwiej będzie je w przyszłości skalować.
W skrócie, im szybciej zadbasz o optymalizację kodu strony WWW, tym mniej problemów Ci grozi.
Optymalizacja kodu HTML
Optymalizacja kodu HTML
Język HTML jest odpowiedzialny za tworzenie struktury strony internetowej. Umożliwia publikowanie tekstów, zdjęć, linków, grafik, tabel, nagłówków, plików audio i wideo. Optymalizacja kodu strony to przede wszystkim optymalizacja właśnie kodu HTML – bo to dzięki niemu również roboty indeksujące Google są w stanie zinterpretować treści zawarte na stronie.
Minifikacja HTML
Najprostszą rzeczą, jaką można zrobić dla optymalizacji kodu strony jest… wyczyszczenie go ze wszystkich znaków, które nie są potrzebne do działania strony: spacji, komentarzy, znaków nowej linii czy wcięć. Choć z punktu widzenia developera wszystkie te elementy poprawiają czytelność kodu, przeglądarka ich nie potrzebuje – dla niej to „nadbagaż”. ;)
Minifikację najczęściej przeprowadza się na etapie wdrożenia z pomocą narzędzi takich jak HTMLMinifier czy Gulp, albo zostawia CMSowym wtyczkom pokroju WP Rocket.
Semantyczny HTML
W języku HTML wszystkie elementy strony opisuje się przy użyciu tagów. Można je ustrukturyzować, opisując ich wygląd i układ na stronie… albo na podstawie ich znaczenia.
To drugie podejście daje w rezultacie semantyczny kod HTML, w którym tagi nadają kontekst treści i sprawiają, że łatwiej jest je zrozumieć robotom wyszukiwarek oraz, na przykład, screen readerom dla osób niewidomych i niedowidzących.
Także zamiast prostych znaczników <div> albo <span> lepiej stosować:
- <header>, <main>, <nav>, <footer> – dla opisu struktury strony,
- <article>, <section>, <aside> – dla treści,
- <figure>, <figcaption>, <mark>, <time> – dla uzupełnień i metadanych.
Optymalizacja nagłówków H1-H6
Kolejnym ważnym elementem kodu HTML są nagłówki H1-H6, które opisują zawartość strony. Nagłówki posiadają 6 stopni. Technicznie specyfikacja HTML5 pozwala na stosowanie wielu tagów H1, jednak ze względu na SEO i dla zachowania czytelnej struktury lepiej tego nie robić. Zdecydowanie lepszą praktyką jest używanie jednego nagłówka H1 na stronę, który jest jak tytuł książki, a pozostałe są podtytułami, które można powtarzać.
W nagłówkach warto zawrzeć słowa kluczowe, jednak w sposób mało nachalny. W końcu powinny być zachętą dla użytkownika do przeczytania treści i to właśnie ich nadrzędna rola. Nagłówek H1 powinien zawierać przyjazny tekst, który zachęci do czytania strony. Musi zainteresować internautę, spowodować, że będzie chciał czytać dalej. Warto, by był unikalny oraz rzeczowy. Nie ślepo powtarzający słowa kluczowe, chociaż nawiązujący do tych najważniejszych.
Pozostałe nagłówki muszą być jak najbardziej naturalne oraz adekwatne do treści i tworzyć logiczną hierarchię, dzięki której użytkownicy z łatwością przeczytają tekst. To pomoże także robotom wyszukiwarek w zrozumieniu kontekstu i relacji między poszczególnymi sekcjami.
Optymalizacja meta tagów
Meta znaczniki zawierają bardzo podstawowe informacje dotyczące witryny, które czytają zarówno boty Google, jak i użytkownicy – na stronie wyników wyszukiwania.
- Meta title to pierwsza informacja na temat danej podstrony, którą widzisz w wyszukiwarce. W jaki sposób go stworzyć? Tytuł powinien zawierać najważniejsze dla strony słowa kluczowe, CTA, wartościowe informacje dla użytkownika i nazwę firmy. Warto, by każda podstrona posiadała unikalny meta title, który określi, czego ona dotyczy. Choć limit znaków nie jest określony, jego długość powinna mieścić się w ok. 600 pikselach (60-70 znaków). To pozwoli uniknąć ucięcia tytułu w wynikach wyszukiwania. Zdarza się, że Google sam modyfikuje go tak, aby był dopasowany do zapytania użytkownika;
- meta description to znacznik, który jest opisem strony wyświetlanym w Google pod tytułem i adresem witryny. Nie jest już bezpośrednim czynnikiem rankingowym, ale pozytywnie wpływa na CTR i wizerunek strony w wynikach wyszukiwania. Meta description powinien mieścić się w ok. 920 pikselach, co odpowiada 150-160 znakom. Zaleca się, by treść znacznika była unikalna, opisywała to, co znajduje się na podstronie, może zawierać również CTA, które ma za zadanie zainteresować czytelnika. Istotne jest umiejscowienie najważniejszych informacji i wezwania do działania. Powinny znaleźć się na początku opisu. Google również często generuje ten opis na podstawie treści strony i samego zapytania;
- meta tag robots to bardzo istotny znacznik, który pozwala na kontrolę indeksowania wybranych podstron. Warto przyjrzeć mu się bliżej w sytuacji, gdy posiadasz stronę, która ma np. podstronę logowania do panelu administracyjnego czy finalizacji płatności. Ten meta tag pozwala na ich blokadę przed indeksowaniem przez boty Google. Wykorzystuje do tego takie dyrektywy jak noindex (nie indeksuj tej strony) oraz nofollow (nie podążaj za linkami na tej stronie).
Meta title, descriptions oraz robots to oczywiście nie wszystkie meta tagi dostępne dla programistów, ale najważniejsze, za pomocą których developerzy mogą wpłynąć bezpośrednio na skanowanie i indeksowanie stron. Obecnie w optymalizacji istotne są także takie tagi jak np. meta name=”viewport”, kluczowy dla funcjonowania responsywnych stron na urządzeniach mobilnych. Warto pamiętać również o tagach z rodziny Open Graph (dla Facebooka czy LinkedIna) i Twitter Cards, które wpływają na wygląd linków udostępnianych w social mediach.
Walidacja kodu (W3C)
Na koniec zostaje walidacja kodu HTML, czyli sprawdzenie, czy kod źródłowy strony jest zgodny ze standardami ustalonymi przez World Wide Web Consortium (W3C). Chodzi o to, aby wychwycić błędy składniowe czy nieprawidłowo umieszczone atrybuty.
I można to zrobić bardzo łatwo, bo wystarczy użyć walidatora przygotowanego przez W3C na validator.w3.org.
Optymalizacja kodu CSS
Optymalizacja kodu CSS
Optymalizacja kodu strony obejmuje również CSS, który jest językiem odpowiedzialnym za prezentację witryny w wyszukiwarce. CSS umożliwia adaptację strony do różnego typu urządzeń i wyszukiwarek. Ustala wygląd strony oraz rozmieszczenie elementów. Layout, fonty, kolorystyka – za to wszystko odpowiada właśnie CSS.
Co można tu zrobić dla optymalizacji kodu?
- Minifikacja i łączenie plików – podobnie jak w przypadku kodu HTML, style CSS również warto „czyścić” ze zbędnych znaków. Dodatkowo dobrze też jest połączyć wszystkie pliki CSS w jeden. Jeśli strona korzysta z kilku osobnych plików CSS (np. dla frameworka, resetów, komponentów), przeglądarka musi dla każdego wygenerować osobne żądanie HTTP do serwera;
- unikanie inline styles – reguły CSS teoretycznie można umieszczać bezpośrednio w atrybutach HTML (np. <div style="color: red;">). Problem w tym, że przeglądarka nie może zapisać takiego stylu do cache, więc musi go przetwarzać za każdym razem od nowa. Do tego inline styles mogą łatwo powodować konflikty z innymi regułami. Dlatego lepiej jest umieścić większość kodu CSS w oddzielnym pliku;
- stosowanie critical CSS – wyjątkiem, który warto pozostawić w pliku HTML, będą te reguły, które są absolutnie niezbędne do wyświetlenia pierwszego widocznego ekranu strony (above the fold) – np. nagłówka, menu, sekcji hero. Dzięki takiemu rozwiązaniu przeglądarka może błyskawicznie wyrenderować pierwszy ekran, a resztę – gdy już pobierze główny arkusz z pozostałymi regułami CSS.
Optymalizacja JavaScript
Optymalizacja JavaScript
JavaScript odpowiada za wszystko, co interaktywne – formularze, animacje, rozwijane menu albo sklepowe wyszukiwarki. Problem w tym, że im więcej skryptów JS, tym większe ryzyko, że zaczną spowalniać stronę. Inna sprawa, że znaczna część kodu – według analizy milionów stron mobilnych przeprowadzonej przez HTTP Archive, aż 35%! – z reguły w ogóle nie jest wykorzystywana. A i tak przeglądarka musi ją pobrać i przetworzyć.
Jak można to rozwiązać?
- Minifikacja skryptów JS – podobnie jak w przypadku HTMLa i CSS. Kod JavaScipt można bez problemu „wyczyścić” przy pomocy darmowych narzędzi dla developerów (np. Terser albo UglifyJS)
- odroczone (defer) i asynchroniczne (async) ładowanie – domyślnie każda przeglądarka wstrzymuje renderowanie strony do momentu, aż pobierze i wykona wszystkie napotkane skrypty JavaScript, co w oczywisty sposób opóźnia ładowanie treści. Na szczęście można temu zapobiec, dodając do tagu <script> jeden z dwóch atrybutów:
- defer – opóźnia wykonanie skryptu do momentu, aż cały HTML zostanie wczytany, ale zachowuje kolejność wykonywania skryptów,
- async – ładuje i wykonuje skrypt natychmiast po pobraniu, niezależnie od kolejności i od stanu parsowania HTML.
- ograniczanie skryptów „z zewnątrz” – mowa o reklamach, skryptach chatów albo Meta Pixel; nawet jeśli będą ładowane asynchronicznie, wciąż jest to dodatkowe obciążenie dla przeglądarki. Dlatego lepiej jest je ograniczyć do niezbędnego minimum.
Optymalizacja obrazów
Optymalizacja obrazów
Na wielu witrynach to właśnie grafiki są głównym „winnym” wydłużających się czasów ładowania. Nic dziwnego, skoro mogą odpowiadać nawet za połowę całkowitej wagi strony. Dlatego ich optymalizacja to jeden z najszybszych sposobów na poprawę wydajności.
Pierwszym krokiem powinna być kompresja obrazów, czyli zmniejszenie ich rozmiaru bez znaczącego pogorszenia jakości. Można ją przeprowadzić w dwóch wariantach:
- bezstratnym (lossless), który usuwa zbędne metadane i optymalizuje kodowanie, zachowując oryginalny wygląd grafiki;
- stratnym (lossy), który pozwala uzyskać znacznie mniejsze pliki kosztem nieznacznej utraty jakości – co powinno być niezauważalne dla użytkownika.
Obie metody kompresji da się zautomatyzować przy pomocy narzędzi typu TinyPNG i Squoosh czy CMSowych wtyczek.
Kolejna kwestia to format, w jakim grafiki trafiają na przeglądarkę. Zamiast tradycyjnych JPEG/PNG, które potrafią ważyć sporo, lepiej stosować nowsze formaty. Na przykład WebP, który świetnie radzi sobie z kompresją obrazów (stratną i bezstratną), przy plikach nawet o 30% mniejszych niż tradycyjne JPEGi.
Na koniec lazy loading. Czyli technika, która sprawia, że grafiki ładowane są dopiero wtedy, gdy użytkownik przewinie stronę do tego miejsca, w którym dany obraz się znajduje. Lazy loading znacznie przyspiesza ładowanie pierwszego widoku above the fold, a do tego pomaga ograniczyć zużycie transferu (ważne na urządzeniach mobilnych).
Żeby to zrobić, wystarczy tylko dodać atrybut loading="lazy" do tagu <img> przy grafice w pliku HTML, tak jak niżej:
<img src="produkt.jpg" alt="Opis produktu" loading="lazy">
Konfiguracja serwera
Konfiguracja serwera
Oczywiście, nawet najlepiej napisany front-end dalej nie będzie zbyt wydajny, jeśli nie zadbasz też o optymalizację po stronie serwera. Technik jest sporo, my wybraliśmy dwie – stosunkowo proste.
Jedną z nich jest kompresja plików HTML, CSS oraz JavaScript metodą Gzip lub Brotli. Z tak „spakowanymi” plikami radzą sobie wszystkie przeglądarki. Działają one tak samo, jak nieskompresowane – ale są lżejsze o 70-80%. Apache, Nginx i LiteSpeed (oraz większość CDNów) pozwalają łatwo włączyć oba algorytmy do kompresji plików przez odpowiednią konfigurację nagłówków lub, po prostu, w panelu zarządzania.
Druga technika, a w zasadzie wskazówka – korzystaj z pamięci podręcznej (cache) przeglądarki. Jeśli dany zasób – np. logo, arkusz stylów czy czcionka – nie zmienia się między wizytami, nie ma potrzeby, by przeglądarka pobierała go za każdym razem od nowa. Browser cache można włączyć ustawiając nagłówki HTTP Cache-Control w plikach konfiguracyjnych serwera.
Optymalizacja kodu w praktyce – co dalej?
Optymalizacja kodu w praktyce – co dalej?
Po zakończeniu prac technicznych konieczne jest jeszcze wdrożenie działań, które utrwalą efekty optymalizacji i pomogą jak najlepiej je wykorzystać.
- Weryfikacja i pomiar efektów – PageSpeed Insights, Lighthouse czy GTmetrix pomogą Ci dokładnie zmierzyć metryki wydajności: czas renderowania, wagę strony, Core Web Vitals i inne wskaźniki. Równocześnie warto śledzić dane z Google Analytics i z Search Console – czy poprawił się bounce rate? Czy wzrosła liczba sesji mobilnych? Jak zmieniła się widoczność w wynikach wyszukiwania?
- Monitoring – strona, która dziś działa świetnie, za kilka miesięcy może znowu zwolnić. Dlatego zawsze radzimy przeprowadzać regularne audyty techniczne (np. raz na kwartał) i testy wydajności po większych zmianach na stronie.
- Rozwój przez duże „R” – dobrze zoptymalizowany kod to fundament dla wszystkich kolejnych działań na Twojej stronie. Warto ten potencjał wykorzystać: uruchomić kolejne działania contentowe, rozwijać SEO, inwestować w kampanie i wprowadzać nowe funkcje – już bez obawy, że silnik strony im nie sprosta.