Prefetch – co to jest i jak działa?

Prefetching to technika optymalizacji wydajności stron internetowych, która polega na wcześniejszym pobieraniu zasobów (takich jak pliki, obrazy, skrypty) zanim użytkownik faktycznie ich potrzebuje. Dzięki temu, gdy użytkownik przejdzie na kolejną stronę lub wykona akcję wymagającą dostępu do określonych zasobów, przeglądarka ma je już gotowe w swojej pamięci, co przyspiesza ładowanie.

Prefetching jest szczególnie przydatny, gdy można przewidzieć, jakie strony lub zasoby użytkownik będzie odwiedzał jako następne. Na przykład, jeśli strona główna Twojej witryny zawiera linki do często odwiedzanych podstron, prefetching może sprawić, że zasoby tych stron zostaną pobrane w tle, zanim użytkownik kliknie w link.

Jak działa prefetching?

Prefetching działa poprzez informowanie przeglądarki, które zasoby lub strony powinna załadować z wyprzedzeniem. Działa to tak, że kiedy użytkownik odwiedza stronę A, przeglądarka w tle pobiera zasoby, które mogą być potrzebne na stronie B, C lub innych podstronach, zanim użytkownik faktycznie na nie przejdzie.

Dzięki tej technice, gdy użytkownik kliknie link prowadzący na stronę B, przeglądarka już ma pobrane jej kluczowe zasoby (takie jak pliki CSS, JavaScript czy obrazy), co znacznie przyspiesza jej ładowanie.

Prefetching jest wdrażany za pomocą specjalnych znaczników w kodzie HTML lub nagłówków HTTP. Przykład takiego znacznika to:

<link rel="prefetch" href="https://example.com/strona-b">

W ten sposób przeglądarka wie, że powinna załadować zasoby z podanego adresu, zanim użytkownik przejdzie na tę stronę.

Rodzaje prefetchingu

Istnieją różne rodzaje prefetchingu, z których każdy ma trochę inne zastosowanie. Oto najważniejsze z nich:

1. DNS Prefetching

DNS Prefetching (prefetching DNS) przyspiesza rozwiązywanie nazw domen. Zanim przeglądarka połączy się z serwerem, musi „rozwiązać” nazwę domeny, czyli zamienić ją na adres IP. DNS Prefetching umożliwia wcześniejsze rozwiązanie tej nazwy, co skraca czas potrzebny na połączenie się z serwerem. Przykład użycia:

<link rel="dns-prefetch" href="//example.com">

Dzięki DNS Prefetching, gdy użytkownik kliknie link prowadzący do zasobu na zewnętrznym serwerze, przeglądarka już będzie znała jego adres IP, co przyspieszy ładowanie strony.

2. Preconnect

Preconnect to technika, która pozwala przeglądarce na wcześniejsze nawiązanie połączenia z zewnętrznym serwerem. Obejmuje to rozwiązanie DNS, ustawienie TLS (szyfrowanie połączenia) oraz nawiązanie połączenia TCP. Preconnect jest szczególnie przydatny, gdy strona ładuje zasoby z zewnętrznych źródeł, takich jak fonty Google czy zewnętrzne pliki CSS.

Przykład użycia:

<link rel="preconnect" href="https://fonts.googleapis.com">

Dzięki tej technice, gdy przeglądarka będzie potrzebowała załadować zasoby z zewnętrznego serwera, cały proces połączenia będzie znacznie szybszy.

3. Prerendering

Prerendering to technika, która pozwala przeglądarce na załadowanie całej strony w tle, zanim użytkownik faktycznie kliknie link prowadzący do tej strony. W odróżnieniu od prefetchingu, który pobiera tylko kluczowe zasoby, prerendering ładuje całą stronę, co sprawia, że po kliknięciu linku, strona pojawia się niemal natychmiast.

Przykład użycia:

<link rel="prerender" href="https://example.com/następna-strona">

Dlaczego prefetching jest ważny?

Prefetching jest istotny, ponieważ znacząco poprawia doświadczenie użytkownika (UX) oraz szybkość ładowania stron. Dzięki temu strona może reagować szybciej na interakcje użytkownika, ponieważ zasoby są już pobrane wcześniej.

Korzyści wynikające z prefetchingu:

  • Szybsze ładowanie stron – Zasoby są dostępne w pamięci przeglądarki, zanim użytkownik kliknie link, co skraca czas ładowania.
  • Lepsze wrażenia użytkownika – Użytkownicy mogą przeglądać witrynę płynniej i szybciej.
  • Zwiększenie wydajności SEO – Szybsze strony są lepiej oceniane przez Google, co może wpłynąć na wyższe pozycje w wynikach wyszukiwania.

Jak wdrożyć prefetching w WordPressie?

Wdrożenie prefetchingu w WordPressie jest stosunkowo proste i można to zrobić ręcznie, dodając odpowiednie znaczniki do kodu HTML, lub korzystając z odpowiednich wtyczek. Oto kroki, jak to zrobić:

1. Ręczne dodanie prefetching do kodu HTML

Jeśli masz dostęp do plików HTML swojej strony, możesz ręcznie dodać znaczniki prefetching do sekcji <head> w swoim motywie. Oto przykład dodania prefetchingu dla zewnętrznej domeny:

<link rel="prefetch" href="https://example.com/strona-b">
<link rel="dns-prefetch" href="//example.com">

Dzięki temu przeglądarka będzie wcześniej pobierać zasoby związane z kolejną stroną lub przygotuje DNS do szybszego połączenia.

2. Użycie wtyczek w WordPressie

Jeśli nie chcesz ręcznie edytować kodu, możesz skorzystać z wtyczek, które automatycznie dodadzą odpowiednie znaczniki prefetching. Oto kilka popularnych wtyczek, które mogą pomóc:

  • WP Rocket – Zaawansowana wtyczka do optymalizacji wydajności, która oferuje funkcje prefetching i preconnect, a także inne narzędzia do przyspieszenia działania strony.
  • Perfmatters – Lekka wtyczka do optymalizacji, która pozwala na ręczne dodanie prefetching i preconnect do zewnętrznych zasobów.

Kiedy unikać prefetchingu?

Prefetching nie zawsze jest konieczny i w niektórych przypadkach może prowadzić do niepotrzebnego zużycia zasobów, szczególnie gdy użytkownicy nigdy nie odwiedzą przewidywanych stron. Stosuj prefetching rozważnie, zwłaszcza w przypadku stron z dużą ilością zasobów zewnętrznych. Należy unikać prefetchingu stron lub zasobów, które nie są często odwiedzane lub potrzebne użytkownikowi.

Podsumowanie

Prefetching to technika, która poprawia wydajność i szybkość ładowania stron internetowych, pobierając zasoby zanim użytkownik faktycznie ich potrzebuje. Stosując prefetching, możesz znacząco skrócić czas ładowania stron, co przekłada się na lepsze doświadczenie użytkownika oraz lepsze wyniki SEO.

W WordPressie prefetching można wdrożyć ręcznie poprzez dodanie odpowiednich znaczników w kodzie HTML, lub automatycznie za pomocą wtyczek, takich jak WP Rocket. Pamiętaj jednak, aby używać tej techniki rozważnie, aby nie obciążać serwera niepotrzebnymi zasobami.