Preconnect i DNS-prefetch – kiedy warto używać
Preconnect i DNS-prefetch to dwa mechanizmy, które potrafią znacząco wpłynąć na czas ładowania strony, zwłaszcza gdy korzystasz z zewnętrznych serwisów, fontów czy CDN-ów. W praktyce poprawne zastosowanie tych wskazówek może skrócić czas do załadowania krytycznych zasobów, ale niewłaściwe użycie przynosi marnowanie zasobów i potencjalne problemy prywatności. Poniżej znajdziesz wyczerpujące omówienie, kiedy i jak stosować te techniki oraz jakie są ich ograniczenia.
Czym są preconnect i DNS-prefetch
DNS-prefetch i preconnect należą do tzw. resource hints — podpowiedzi przeglądarce, aby przygotowała połączenia do zewnętrznych domen zanim nastąpi żądanie zasobu. Oba mechanizmy redukują opóźnienia związane z nawiązywaniem połączeń sieciowych, ale działają na różnych etapach procesu ładowania:
- DNS-prefetch inicjuje jedynie rozwiązywanie nazwy domeny (DNS lookup). Dzięki temu przeglądarka ma już adres IP, gdy później zażądasz zasobu.
- Preconnect idzie dalej — oprócz DNS wykonuje także TCP handshake i negocjację TLS, co oznacza, że połączenie jest już otwarte i gotowe do przesyłu danych.
W praktyce użycie preconnect może skrócić czas dostarczenia pierwszego bajtu (TTFB), podczas gdy DNS-prefetch redukuje tylko opóźnienie związane z samym rozpoznaniem domeny. Oba mechanizmy są wykonywane w tle i nie blokują głównego wątku renderowania, ale ich uruchamianie zużywa zasoby sieciowe i systemowe.
Składnia i atrybuty
Standardowe, najczęściej używane deklaracje wyglądają tak:
<link rel=”dns-prefetch” href=”//example.com”>
<link rel=”preconnect” href=”https://example.com” crossorigin>
Użycie atrybutu crossorigin przy preconnect jest istotne, gdy łączysz się z zasobami wymagającymi poświadczeń lub chcesz przed nawiązaniem połączenia otrzymać dostęp do zasobów z odpowiednimi nagłówkami CORS (np. fonty).
Kiedy warto używać
Nie każda domena wymaga preconnect lub dns-prefetch. Optymalny wybór zależy od tego, jak krytyczny jest zasób i jak wcześnie strona zażąda połączenia. Oto najważniejsze scenariusze, w których zastosowanie tych mechanizmów ma sens:
- Zasoby krytyczne ładowane z zewnętrznych serwisów: fonty (webfonts), biblioteki skryptów, CSS hostowane na CDN — jeśli są potrzebne do wyrenderowania pierwszego ekranu, preconnect może przyspieszyć LCP i FCP.
- Serwisy analityczne i reklamowe — gdy skrypty są ładowane dopiero po chwili, można użyć dns-prefetch, aby zredukować opóźnienie przy ich późniejszym załadowaniu.
- Połączenia API lub microservices, które są wywoływane zaraz po załadowaniu strony — preconnect skraca czas do pierwszego żądania.
- Jeśli domena jest wielokrotnie używana na stronie (np. CDN hostujący wiele obrazów), wcześniejsze rozwiązywanie DNS ma sens.
Uwaga: w środowisku, gdzie większość ruchu przebiega po HTTP/2 lub HTTP/3 i korzysta z jednego połączenia do serwera, korzyści z preconnect mogą być mniejsze. Jednocześnie dla wielu domen zewnętrznych (third-party) preconnect może nadal dawać realne zyski.
Jak właściwie wdrożyć
Wdrożenie powinno być oparte na analizie rzeczywistych żądań Twojej strony. Najpierw ustal, które domeny są krytyczne dla użytkownika podczas pierwszego renderu, a potem dodaj wskazówki. Poniżej znajduje się praktyczny przewodnik:
Krok 1 — audyt żądań
- Sprawdź, jakie domeny są wywoływane na pierwszym widoku (network waterfall w DevTools).
- Zidentyfikuj zasoby blokujące renderowanie (fonty, CSS, skrypty synchroniczne).
Krok 2 — wybór mechanizmu
- Jeśli potrzebujesz tylko szybszego rozpoznania domeny, użyj dns-prefetch.
- Jeśli chcesz, by połączenie było gotowe (TCP/TLS), wybierz preconnect i pamiętaj o crossorigin tam, gdzie to konieczne.
- Nie nakładaj preconnect na domeny, z których ładujesz rzadko lub tylko po długim czasie od załadowania strony.
Krok 3 — umieszczenie w kodzie
Wstaw linki w sekcji <head> tak, aby przeglądarka mogła je wykonać jak najwcześniej. Przykłady:
<link rel=”dns-prefetch” href=”//fonts.gstatic.com”>
<link rel=”preconnect” href=”https://fonts.gstatic.com” crossorigin>
W niektórych przypadkach warto użyć kombinacji: dns-prefetch dla wielu domen oraz preconnect dla kilku najważniejszych. Dzięki temu przeglądarka nie otworzy równocześnie zbyt wielu połączeń, a najbardziej krytyczne będą gotowe.
Analiza wpływu na wydajność i metryki
Przed i po wdrożeniu resource hints warto zmierzyć ich wpływ na kluczowe metryki. Najważniejsze z nich to:
- LCP (Largest Contentful Paint) — często poprawia się, gdy fonty lub obrazy krytyczne szybciej zaczynają się ładować dzięki preconnect.
- TTFB (Time To First Byte) — może spaść jeśli preconnect uprzednio wykona handshake.
- FCP (First Contentful Paint) — także może zyskać przy szybszym dostępie do zasobów.
Narzędzia do pomiaru:
- Chrome DevTools (zakładka Network i Performance)
- Lighthouse — aby uzyskać sugestie i porównać audyty przed/po
- WebPageTest — szczegółowe waterfally i breakdown opóźnień
Pamiętaj jednak, że zmiany wprowadzone na jednej stronie testowej mogą nie odzwierciedlać wszystkich wariantów użytkowników (różne sieci, przeglądarki, urządzenia). Testuj na reprezentatywnych środowiskach i z wykorzystaniem rzeczywistych użytkowników (RUM).
Najczęstsze błędy i dobre praktyki
Zastosowanie preconnect i dns-prefetch bez zastanowienia może prowadzić do błędów. Oto lista typowych pułapek oraz rekomendowane praktyki:
- Preconnect do zbyt wielu domen — otwieranie wielu połączeń jednocześnie zwiększa obciążenie sieci i może działać odwrotnie do zamierzonego. Stosuj preconnect tylko tam, gdzie to istotne.
- Pominięcie crossorigin przy preconnect do fontów — spowoduje to, że połączenie może nie działać zgodnie z oczekiwaniami przy żądaniach wymagających CORS.
- Mylenie z prefetch i preload — to trzy różne mechanizmy: prefetch służy do pobierania zasobów na przyszłość (np. do następnej strony), preload informuje przeglądarkę o krytycznym zasobie, a preconnect/dns-prefetch dotyczą połączeń.
- Brak monitoringu — wprowadź metryki i sprawdzaj wpływ zmian w czasie, aby upewnić się, że nie następuje pogorszenie doświadczenia dla części użytkowników.
- Ignorowanie warstwy sieciowej — jeśli większość użytkowników korzysta z HTTP/2+ i jednej wspólnej domeny, korzyści mogą być minimalne; analiza ruchu powinna poprzedzać wdrożenie.
Dobre praktyki krótkie podsumowanie
- Używaj preconnect dla kilku, naprawdę krytycznych domen.
- Stosuj dns-prefetch tam, gdzie preconnect byłby nadmiarowy.
- Dodaj crossorigin tam, gdzie zasoby tego wymagają (np. webfonts).
- Testuj i mierz efekty na rzeczywistych użytkownikach.
Bezpieczeństwo i prywatność
Warto pamiętać, że każde wcześniejsze nawiązanie połączenia z domeną third-party może mieć konsekwencje prywatności: serwisy reklamowe lub analityczne mogą już „widzieć” połączenia z Twojej strony, nawet jeśli nie załadowały jeszcze skryptów. Dlatego:
- Oceniaj zaufanie do domen, z którymi łączysz się automatycznie.
- Unikaj preconnect do domen, które mogą zbierać dane wrażliwe, jeśli nie jest to konieczne.
- Dokumentuj decyzje dotyczące resource hints w zespole, aby zachować spójność i audytowalność.
Stosując się do powyższych zasad, możesz osiągnąć realne przyspieszenie strony bez nadmiernego obciążenia infrastruktury i bez negatywnego wpływu na prywatność użytkowników.


