Optymalizacja LCP za pomocą Signed Exchange

Jak mierzyć i optymalizować podpisane umowy wymiany reklam, aby uzyskać jak najlepsze wyniki

Devin Mullins
Devin Mullins

Podpisane wymiany (SXG) to sposób na poprawę szybkości strony, głównie największego wyrenderowania treści (LCP). Gdy witryny odsyłające (obecnie wyszukiwarka Google) zawierają link do strony, mogą wstępnie pobrać ją do pamięci podręcznej przeglądarki, zanim użytkownik kliknie link.

Można tworzyć strony internetowe, które po wstępnym pobraniu nie wymagają dostępu do sieci na krytycznym etapie renderowania strony. Przy połączeniu 4G czas wczytywania tej strony zmienia się z 2,8 s na 0,9 s (pozostałe 0,9 s to głównie czas wykorzystania procesora):

Większość osób publikujących SXG korzysta obecnie z łatwej w użyciu funkcji Automatic Signed Exchanges (ASX) firmy Cloudflare (chociaż istnieją też opcje open source):

Panel ustawień Cloudflare z polem wyboru do włączenia automatycznych wymian podpisanych cyfrowo

W wielu przypadkach zaznaczenie pola umożliwiającego włączenie tej funkcji wystarczy, aby uzyskać znaczną poprawę widoczną powyżej. Czasami trzeba wykonać kilka dodatkowych czynności, aby mieć pewność, że te SXG działają zgodnie z oczekiwaniami na każdym etapie procesu, oraz zoptymalizować strony, aby w pełni korzystać z wstępnego pobierania.

W ciągu ostatnich kilku miesięcy od wprowadzenia Cloudflare czytałam i odpowiadałam na pytania na różnych forach. Doradzamy też stronom, by w pełni wykorzystać możliwości wdrożenia SXG. Ten post zawiera moje porady. Pokaże Ci, jak:

Wprowadzenie

Plik SXG to plik zawierający adres URL, zestaw nagłówków odpowiedzi HTTP i treść odpowiedzi, które są podpisane kryptograficznie za pomocą certyfikatu PKI sieci. Gdy przeglądarka wczytuje plik SXG, sprawdza te elementy:

  • SXG nie wygasł.
  • Podpis jest zgodny z adresem URL, nagłówkami, treścią i certyfikatem.
  • Certyfikat jest ważny i zgodny z adresem URL.

Jeśli weryfikacja się nie powiedzie, przeglądarka zrezygnuje z SXG i zamiast tego pobierze podpisany adres URL. Jeśli weryfikacja się powiedzie, przeglądarka wczyta podpisaną odpowiedź, traktując ją tak, jakby pochodziła bezpośrednio z podpisanego adresu URL. Umożliwia to przechowywanie danych SXG na dowolnym serwerze, o ile nie wygasły ani nie zostały zmodyfikowane od momentu podpisania.

W przypadku wyszukiwarki Google mechanizm SXG włącza wstępne pobieranie stron z wyników wyszukiwania. W przypadku stron obsługujących SXG wyszukiwarka Google może pobrać ich kopię z buforu, która jest hostowana na stronie webpkgcache.com. Adresy URL z domeny webpkgcache.com nie wpływają na wyświetlanie ani zachowanie strony, ponieważ przeglądarka respektuje oryginalny, podpisany adres URL. Wstępne pobieranie może znacznie przyspieszyć wczytywanie strony.

Analizuj

Aby zobaczyć korzyści płynące z SXG, zacznij od użycia narzędzia laboratoryjnego do analizy wydajności SXG w powtarzalnych warunkach. Za pomocą WebPageTest możesz porównywać wykresy kaskadowe i LCP z wykorzystaniem lub bez wykorzystania pobierania wstępnego SXG.

Aby wygenerować test bez SXG:

  • Otwórz stronę WebPageTest i zaloguj się. Gdy się zalogujesz, historia testów będzie zapisywana, aby można było je później łatwo porównywać.
  • Wpisz adres URL, który chcesz przetestować.
  • Otwórz Konfigurację zaawansowaną. (Test SXG wymaga konfiguracji zaawansowanej, więc warto użyć jej tutaj, aby mieć pewność, że opcje testu są takie same).
  • Na karcie Ustawienia testu warto ustawić połączenie z 4G i zwiększyć „Liczba testów do wykonania” do 7.
  • Kliknij Rozpocznij test.

Wygeneruj test z SXG, wykonując te same czynności jak powyżej, ale przed kliknięciem Rozpocznij test otwórz kartę Skrypt, wklej ten skrypt WebPageTest i zmodyfikuj 2 adresy URL navigate zgodnie z instrukcjami:

// Disable log collection for the first step. We only want the waterfall for the target navigation.
logData 0

// Visit a search result page that includes your page.
navigate https://google.com/search?q=site%3Asigned-exchange-testing.dev+image

// Wait for the prefetch to succeed.
sleep 10

// Re-enable log collection.
logData 1

// Navigate to the prefetched SXG on the Google SXG Cache.
navigate https://signed--exchange--testing-dev.webpkgcache.com/doc/-/s/signed-exchange-testing.dev/sxgs/valid-image-subresource.html

Jeśli Twoja strona nie pojawia się jeszcze w żadnych wynikach wyszukiwania Google, możesz użyć tej strony z wczytywaniem wstępnym, aby wygenerować fikcyjną stronę wyników wyszukiwania.

Aby określić drugi adres URL navigate, otwórz stronę za pomocą rozszerzenia do Chrome SXG Validator i kliknij ikonę rozszerzenia, aby wyświetlić adres URL pamięci podręcznej:

SXG Validator wyświetlający informacje o pamięci podręcznej, w tym adres URL

Po zakończeniu tych testów otwórz Historię testów, wybierz 2 testy i kliknij Porównaj:

Historia testów z 2 zaznaczonymi testami i wyróżnionym przyciskiem Porównaj

Dodaj &medianMetric=LCP do adresu URL porównywania, aby WebPageTest wybrał uruchomienie z medianą LCP dla każdej strony porównywanej. (wartość domyślna to mediana według wskaźnika Szybkość indeksu).

Aby porównać wodospady, rozwiń sekcję Przezroczystość wodospadu i przeciągnij suwak. Aby wyświetlić film, kliknij Dostosuj ustawienia paska filmowego, przewiń w dół w oknie dialogowym i kliknij Wyświetl film.

Jeśli pobieranie wstępne SXG się powiedzie, zobaczysz, że kaskada „z SXG” nie zawiera wiersza dla HTML, a pobieranie zasobów podrzędnych rozpoczyna się wcześniej. Porównaj na przykład okresy „przed” i „po” tutaj:

Kaskada sieci bez pobierania z wyprzedzeniem SXG; pierwszy wiersz to pobieranie HTML, które trwa 1050 ms Kaskada sieci z wyprzedzającym pobieraniem SXG; HTML został pobrany z wyprzedzeniem, co pozwoliło rozpocząć pobieranie wszystkich zasobów podrzędnych o 1050 ms wcześniej

Debugowanie

Jeśli WebPageTest pokazuje, że SXG jest pobierana w ramach przewidywania, oznacza to, że wszystkie etapy łańcucha zostały wykonane prawidłowo. Możesz przejść do sekcji Optymalizuj, aby dowiedzieć się, jak jeszcze bardziej poprawić LCP. W przeciwnym razie musisz ustalić, gdzie w potoku wystąpił błąd i dlaczego. Dowiedz się, jak to zrobić.

Publikowanie

Upewnij się, że strony są generowane jako pliki SXG. Aby to zrobić, musisz udawać robota. Najłatwiej jest użyć rozszerzenia do Chrome SXG Validator:

Weryfikator SXG pokazujący znacznik wyboru (✅) i typ treści application/signed-exchange;v=b3

Rozszerzenie pobiera bieżący adres URL z nagłówkiem żądania Accept, który wskazuje, że preferuje wersję SXG. Jeśli obok pola Źródło widzisz znacznik wyboru (✅), oznacza to, że zwrócono SXG. Możesz przejść do sekcji Indeksowanie.

Jeśli widzisz znak krzyżyka (❌), oznacza to, że nie zwrócono SXG:

Walidator SXG z krzyżykiem (❌) i typem treści: tekst/html

Jeśli włączona jest usługa ASX Cloudflare, najprawdopodobniej przyczyną oznaczenia krzyżykiem (❌) jest nagłówek odpowiedzi z kontrolą pamięci podręcznej. ASX sprawdza nagłówki o tych nazwach:

  • Cache-Control
  • CDN-Cache-Control
  • Surrogate-Control
  • Cloudflare-CDN-Cache-Control

Jeśli któryś z tych nagłówków zawiera którąś z tych wartości, nie pozwoli na wygenerowanie SXG:

  • private
  • no-store
  • no-cache
  • max-age mniejsza niż 120, chyba że jest zastąpiona przez wartość s-maxage większą lub równą 120

W takich przypadkach ASX nie tworzy SXG, ponieważ można przechowywać i wykorzystywać SXG w przypadku wielu wizyt i użytkowników.

Inną możliwą przyczyną pojawienia się znaku krzyżowego (❌) jest obecność jednego z tych stanowych nagłówków odpowiedzi (z wyjątkiem Set-Cookie). ASX usuwa nagłówek Set-Cookie, aby zachować zgodność ze specyfikacją SXG.

Inną możliwą przyczyną jest obecność nagłówka odpowiedzi Vary: Cookie. Googlebot pobiera elementy SXG bez danych logowania użytkownika i może wyświetlać je wielu użytkownikom. Jeśli na podstawie plików cookie udostępnisz różnym użytkownikom kod HTML, mogą oni zauważyć nieprawidłowe działanie, na przykład wyświetlenie strony jako wylogowany użytkownik.

Zamiast rozszerzenia Chrome możesz użyć narzędzia takiego jak curl:

curl -siH "Accept: application/signed-exchange;v=b3" $URL | less

lub dump-signedexchange:

dump-signedexchange -verify -uri $URL

Jeśli kod SXG jest dostępny i prawidłowy, zobaczysz jego czytelny dla człowieka wydruk. W przeciwnym razie pojawi się komunikat o błędzie.

Indeksowanie

Sprawdź, czy wyszukiwarka Google zindeksuje Twoje zapytania SXG. Otwórz Narzędzia deweloperskie w Chrome i znajdź swoją stronę w Google. Jeśli strona została zindeksowana jako SXG, link Google do tej strony będzie zawierał atrybut data-sxg-url wskazujący kopię webpkgcache.com:

Wyniki wyszukiwania Google z Narzędziami deweloperskimi pokazującymi tag kotwicy wskazujący stronę webpkgcache.com

Jeśli wyszukiwarka Google uzna, że użytkownik prawdopodobnie kliknie wynik, pobiera go w ramach wstępnego pobierania:

Wyniki wyszukiwania Google z Narzędziami dla deweloperów pokazującymi link z rel=prefetch do webpkgcache.com

Element <link> instruuje przeglądarkę, aby pobrała plik SXG do pamięci podręcznej z pobieraniem z wyprzedzeniem. Gdy użytkownik kliknie element <a>, przeglądarka użyje z pamięci podręcznej SXG do renderowania strony.

Możesz też sprawdzić, czy dane zostały pobrane z zapasu, otwierając w Narzędziach dla programistów kartę Sieć i szukając adresów URL zawierających webpkgcache.

Jeśli <a> wskazuje stronę webpkgcache.com, oznacza to, że indeksowanie podpisanej komunikacji w wyszukiwarce Google działa. Możesz przejść do sekcji Przetwarzanie.

Inaczej może się zdarzyć, że od momentu włączenia SXG Google nie zindeksował jeszcze ponownie Twojej strony. Użyj narzędzia do sprawdzania adresów URL w Google Search Console:

Narzędzie do sprawdzania adresów URL w Search Console: kliknij Wyświetl zindeksowaną stronę, a potem Więcej informacji.

Obecność nagłówka digest: mi-sha256-03=... oznacza, że Google pomyślnie zindeksowało wersję SXG.

Jeśli nagłówek digest jest nieobecny, może to oznaczać, że usługa SXG nie została wyświetlona robotowi Googlebot lub że indeks nie został zaktualizowany od czasu włączenia SXG.

Jeśli SXG został zindeksowany, ale nadal nie jest połączony, może to oznaczać, że nie spełnia on wymagań dotyczących pamięci podręcznej. Omówimy je w następnej sekcji.

Przetwarzanie

Gdy wyszukiwarka Google indeksuje SXG, wysyła jego kopię do pamięci podręcznej Google SXG, która sprawdza, czy spełnia ona wymagania dotyczące pamięci podręcznej. Rozszerzenie do Chrome wyświetla wynik:

Weryfikator SXG wyświetlający znacznik wyboru (✅) i brak komunikatu ostrzegawczego

Jeśli widzisz znacznik wyboru (✅), możesz przejść do sekcji Optymalizuj.

Jeśli nie spełnia wymagań, zobaczysz krzyżyk (❌) i komunikat ostrzegawczy z wyjaśnieniem, dlaczego:

Weryfikator SXG pokazujący znak krzyża (❌) i komunikat ostrzegawczy

W takim przypadku strona będzie działać tak samo jak przed włączeniem SXG. Google będzie prowadzić do strony na jej pierwotnym hoście bez wstępnego pobierania SXG.

Jeśli kopia w pamięci podręcznej wygasła i jest ponownie pobierana w tle, zobaczysz piasek w klepsydrze (⌛):

Weryfikator SXG wyświetlający klepsydrę (⌛) i brak komunikatu ostrzegawczego

Dokumentacja Google dla deweloperów dotycząca SXG zawiera też instrukcje ręcznego wysyłania zapytań do pamięci podręcznej.

Optymalizuj

Jeśli rozszerzenie SXG Validator w Chrome pokazuje wszystkie znaczniki wyboru (✅), oznacza to, że SXG może być wyświetlany użytkownikom. Czytaj dalej, aby dowiedzieć się, jak zoptymalizować stronę internetową, by uzyskać największy wzrost LCP dzięki SXG.

max-age

Gdy wygaśnie termin ważności danych SXG, pamięć podręczna Google SXG pobierze nową kopię w tle. Podczas oczekiwania na pobranie użytkownicy są przekierowywani na stronę na pierwotnym hoście, który nie jest wstępnie pobierany. Im dłużej ustawisz Cache-Control: max-age, tym rzadziej będzie przeprowadzane pobieranie w tle, a tym samym częściej zmniejszanie LCP przez pobieranie z wyprzedzeniem.

Jest to kompromis między wydajnością a aktualnością, a pamięć podręczna pozwala właścicielom witryn oferować SXG maksymalny wiek od 2 minut do 7 dni, zgodnie z konkretnymi potrzebami każdej strony. Z naszych obserwacji wynika, że:

  • max-age=86400 (1 dzień) lub dłuższy działa dobrze w zakresie wydajności
  • max-age=120 (2 minuty) – nie

Mamy nadzieję, że w miarę pogłębiania analizy danych dowiemy się więcej o wartościach pośrednich.

user-agent

Raz zaobserwowałem wzrost czasu LCP podczas korzystania z wstępnie pobranego SXG. Uruchomiłem WebPageTest, aby porównać medianę wyników z włączonym i wyłączonym wstępnym pobieraniem SXG. Kliknij Dalej poniżej:

Kaskada sieci bez pobierania SXG z wyprzedzeniem; LCP wynosi 2 sekundy Kaskada sieci z wstępnym wczytaniem SXG; HTML został wstępnie wczytany, co pozwoliło wszystkim podzasobom rozpocząć wczytywanie 800 ms wcześniej, ale LCP wynosi 2,1 sekundy

Widzę, że funkcja wstępnego pobierania działa. Kod HTML zostaje usunięty z ścieżki krytycznej, dzięki czemu wszystkie zasoby podrzędne mogą zostać wczytane wcześniej. Jednak LCP (zielona przerywana linia) zwiększył się z 2 s do 2,1 s.

Aby zdiagnozować problem, sprawdziłem paski filmu. Strona renderuje się inaczej w SXG. W zwykłym języku HTML „największym elementem” LCP był nagłówek. Jednak w wersji SXG dodano na stronie baner wczytywany z opóźnieniem, który przesunął nagłówek poniżej pola widocznego na ekranie, przez co nowym największym elementem stało się okno do wyrażenia zgody na wykorzystanie plików cookie wczytywane z opóźnieniem. Wszystko renderowało się szybciej niż do tej pory, ale zmiana układu spowodowała, że dane są raportowane wolniej.

Po dokładnym zbadaniu sprawy udało mi się odkryć przyczynę różnic w układzie, że strona różni się w zależności od tego parametru (User-Agent), a to w kodzie logicznym jest błąd. Strona wyświetlała stronę na komputery, mimo że nagłówek indeksowania SXG wskazywał urządzenie mobilne. Po naprawieniu problemu przeglądarka ponownie prawidłowo zidentyfikowała nagłówek strony jako największy element.

Po kliknięciu „Po” zauważyłem, że wstępnie pobrane LCP spadło do 1,3 s:

Kaskada sieci bez pobierania SXG z wyprzedzeniem; LCP wynosi 2 sekundy Kaskada sieciowa z pobraniem z wyprzedzeniem SXG; LCP wynosi 1,3 sekundy

SXG są włączone na wszystkich urządzeniach. Aby się do tego przygotować, upewnij się, że spełniasz co najmniej jeden z tych warunków:

Zasoby podrzędne

SXG można używać do wstępnego pobierania zasobów podrzędnych (w tym obrazów) razem z kodem HTML. Cloudflare ASX skanuje kod HTML w poszukiwaniu elementów <link rel=preload> z tej samej domeny (własnych) i przekonwertuje je na nagłówki linków zgodne z SXG. Szczegółowe informacje znajdziesz w kodzie źródłowym tutajtutaj.

Jeśli działa, zobaczysz dodatkowe zapytania do wyszukiwarki Google:

Wyniki wyszukiwania Google na karcie Sieć w Narzędziach deweloperskich, pokazujące pobieranie wstępne obrazu /sub/…/image.jpg

Aby zoptymalizować LCP, przyjrzyj się dokładniej wykresowi kaskadowemu i ustal, które zasoby znajdują się na ścieżce krytycznej do renderowania największego elementu. Jeśli nie można ich pobrać w ramach wstępnego pobierania, zastanów się, czy można je usunąć z ścieżki krytycznej. Zwracaj uwagę na skrypty, które ukrywają stronę, dopóki nie skończą się wczytywać.

Google SXG Cache umożliwia wstępne załadowanie do 20 zasobów podrzędnych, a ASX zapewnia, że ten limit nie zostanie przekroczony. Dodanie zbyt wielu zasobów wstępnego wczytania może jednak wiązać się z ryzykiem. Przeglądarka będzie używać wstępnie wczytywanych zasobów podrzędnych tylko wtedy, gdy wszystkie pliki zostały już pobrane, aby zapobiegać śledzeniu w wielu witrynach. Im więcej zasobów podrzędnych, tym mniejsze prawdopodobieństwo, że wszystkie z nich zostaną pobrane z zapasem przed tym, jak użytkownik kliknie Twoją stronę.

Narzędzie SXG Validator nie sprawdza obecnie zasobów podrzędnych. Aby debugować, użyj w międzyczasie curl lub dump-signedexchange.

Zmierz odległość

Po optymalizacji LCP w WebPageTest warto sprawdzić wpływ wstępnego pobierania SXG na ogólną wydajność witryny.

Dane po stronie serwera

Mierząc dane po stronie serwera, takie jak czas do pierwszego bajtu (TTFB), należy pamiętać, że Twoja witryna wyświetla SXG tylko robotom, które akceptują ten format. Ogranicz pomiary TTFB do żądań pochodzących od prawdziwych użytkowników, a nie od botów. Generowanie SXG może wydłużać czas TTFB w przypadku żądań robota, ale nie ma to wpływu na komfort użytkowników.

Dane po stronie klienta

SXG przynoszą największe korzyści związane z szybkością działania wskaźników po stronie klienta, a zwłaszcza LCP. Aby zmierzyć ich wpływ, możesz po prostu włączyć ASX Cloudflare, poczekać, aż Googlebot ponownie zindeksuje stronę, odczekać kolejne 28 dni na zsumowanie danych Core Web Vitals, a potem sprawdzić nowe wartości CWV. Jednak zmiana może być trudna do zauważenia, ponieważ wpisuje się w tło innych zmian w tym okresie.

Uważam, że warto powiększyć widok wczytywania strony, której dotyczy problem, i umieścić go w taki sposób: „SXG wpływa na X% wyświetleń stron, zwiększając LCP o Y milisekund na 75. percentylu”.

Obecnie prefetching SXG odbywa się tylko pod pewnymi warunkami:

  • przeglądarka Chromium (np. Chrome lub Edge, z wyjątkiem iOS), w wersji M98 lub nowszej.
  • Referer: google.com lub w innych domenach wyszukiwarki Google. Pamiętaj, że w Google Analytics tag odsyłający ma zastosowanie do wszystkich wyświetleń stron w sesji, a prefetch SXG dotyczy tylko pierwszego wyświetlenia strony, która została bezpośrednio połączona z wyszukiwarką Google.

sekcji poświęconej współczesnym badaniom znajdziesz informacje o tym, jak mierzyć „X% odsłon stron” i „poprawę LCP o Y milisekund”.

Współczesne badania

Gdy przeglądasz dane z monitorowania rzeczywistych użytkowników (RUM), musisz podzielić wczytywanie stron na SXG i inne niż SXG. Trzeba przy tym ograniczyć zestaw wczytywanych stron, aby strona inna niż SXG spełniała warunki kwalifikacji do korzystania z technologii SXG i uniknąć efektu błędu doboru. W przeciwnym razie wszystkie te elementy znajdowałyby się tylko w zestawie wczytań stron nieobejmujących SXG, które mogą mieć zupełnie inny LCP:

  • Urządzenia z iOS: różnice w sprzęcie lub szybkości sieci wśród użytkowników tych urządzeń.
  • Starsze przeglądarki Chromium: z tych samych powodów.
  • Komputery: z tych samych powodów lub dlatego, że układ strony powoduje wybranie innego „największego elementu”.
  • Nawigacja w tej samej witrynie (użytkownicy klikający linki w witrynie): użytkownicy mogą ponownie używać zasobów podrzędnych z pamięci podręcznej z poprzedniego wczytania strony.

W Google Analytics (UA) utwórz 2 niestandardowe wymiary o zakresie „Uderzenie”: jeden o nazwie „isSXG” i drugi o nazwie „referrer”. (wbudowany wymiar „Źródło” ma zakres sesji, więc nie wyklucza nawigacji na tej samej stronie).

Edytor wymiarów Google Analytics z zalecanymi ustawieniami

Utwórz niestandardowy segment o nazwie „SXG kontrafaktyczny” z tymi filtrami połączonymi ORAZ:

  • referrer zaczyna się od https://www.google.
  • Browser ściśle pasuje do Chrome
  • Browser Wersja zgodna z wyrażeniem regularnym ^(9[8-9]|[0-9]{3})
  • isSXG ściśle pasuje do false
Edytor segmentów Google Analytics z zalecanymi filtrami

Utwórz kopię tego segmentu o nazwie „SXG”, ale wymiar isSXG ściśle pasuje do true.

W szablonie witryny nad fragmentem kodu Google Analytics dodaj ten fragment kodu. To specjalna składnia, którą ASX zmieni z false na true podczas generowania SXG:

<script data-issxg-var>window.isSXG=false</script>

Aby rejestrować LCP, dostosuj skrypt raportowania Google Analytics zgodnie z zaleceniami. Jeśli używasz tagu gtag.js, zmień polecenie 'config', aby ustawić wymiar niestandardowy (zastępując wartości 'dimension1''dimension2' nazwami zalecanymi przez Google Analytics):

gtag('config', 'YOUR_TRACKING_ID', {
  'dimension1': String(isSXG),
  'dimension2': document.referrer,
});

Jeśli używasz tagu analytics.js, zmodyfikuj polecenie 'create' w sposób opisany tutaj.

Po odczekaniu kilku dni na zebranie danych otwórz raport Zdarzenia w Google Analytics i dodaj szczegółową analizę segmentu SXG. W tym miejscu powinna pojawić się wartość X w kolumnie „SXG wpływają na X% odsłon stron”:

Raport Zdarzenia Google Analytics z segmentem SXG, który pokazuje 12,5% wyjątkowych zdarzeń

Na koniec otwórz raport Web Vitals, wybierz „Wybierz segmenty” i kliknij „SXG w wersji kontrafacktualnej” oraz „SXG”.

Raport dotyczący podstawowych wskaźników internetowych z wybranymi opcjami SXG w wersji kontrafacktualnej i SXG

Kliknij „Prześlij”. Powinny wyświetlić się rozkłady LCP obu segmentów. Wartość Y w ramach „poprawiania LCP o Y milisekund w 75. percentylu” powinna być wypełniona:

Raport dotyczący podstawowych wskaźników internetowych pokazujący rozkłady LCP dla SXG w wariancie kontrafaktowym i SXG

Zastrzeżenia

Po zastosowaniu wszystkich powyższych filtrów załadowania stron SXG w ramach eksperymentu kontrafaktualnego powinny obejmować takie działania:

  • Błędy pamięci podręcznej: jeśli pamięć podręczna SXG Google nie ma aktualnej kopii SXG dla danego adresu URL, przekieruje na pierwotny adres URL w Twojej witrynie.
  • Inne typy wyników: obecnie wyszukiwarka Google obsługuje tylko SXG dla standardowych wyników wyszukiwania w internecie i kilku innych typów. Inne, np. fragmenty z odpowiedzią i karuzela najważniejszych artykułów, zawierają link do pierwotnego adresu URL w Twojej witrynie.
  • Nieodpowiednie adresy URL: jeśli niektóre strony w Twojej witrynie nie kwalifikują się do obsługi SXG (np. dlatego, że nie można ich przechowywać w pamięci podręcznej), mogą się one pojawić w tym zestawie.

Mogą występować odchylenia między wczytaniem strony SXG a powyższym zestawem stron nieobjętych SXG, ale powinna ona być mniejsza niż odchylenie wymienione w górnej części sekcji poświęconej badaniom współczesnym. Może się na przykład okazać, że strony, które nie mogą być przechowywane w pamięci podręcznej, wczytują się wolniej lub szybciej niż strony, które mogą być przechowywane w pamięci podręcznej. Jeśli podejrzewasz, że może to być problem, sprawdź dane ograniczone do konkretnego adresu URL kwalifikującego się do SXG, aby sprawdzić, czy wyniki są zgodne z ogólnymi wynikami badania.

Jeśli w Twojej witrynie są strony AMP, to prawdopodobnie nie zauważysz poprawy wydajności po włączeniu SXG, ponieważ mogą one być już pobierane z wyszukiwarki Google. Rozważ dodanie filtra, który pozwoli wykluczyć takie strony i zwiększyć widoczność istotnych zmian.

I wreszcie, nawet w obliczu wszystkich uprzedzeń doboru, istnieje ryzyko, że przez przetrwanie poprawa LCP będzie wyglądać jak pogorszenie statystyk RUM. Ten artykuł świetnie wyjaśnia to ryzyko. Proponujemy też zapoznanie się z jakąś formą danych porzuceń, która pomoże Ci wykryć, czy tak właśnie jest.

Przed i po badaniu

Aby potwierdzić wyniki z aktualnego badania, warto porównać LCP przed i po włączeniu SXG. Aby wyeliminować potencjalne błędy opisane powyżej, nie ograniczaj się do wyświetleń stron SXG. Zamiast tego sprawdź wyniki kwalifikujące się do SXG – definicje segmentów powyżej, ale bez ograniczenia isSXG.

Pamiętaj, że wyszukiwarka Google może potrzebować nawet kilku tygodni na ponowne zindeksowanie wszystkich stron w Twojej witrynie, aby wykryć, że włączono dla nich tag SXG. W ciągu tych kilku tygodni mogą wystąpić inne potencjalne błędy:

  • Szybsze wczytywanie stron może być możliwe dzięki nowym wersjom przeglądarek lub ulepszeniom sprzętu użytkowników.
  • Ważne wydarzenie, np. święto, może spowodować odchylenia w zwykłym ruchu.

Warto też sprawdzić ogólny LCP w 75. percentylu przed i po zmianach, aby potwierdzić wyniki badań. Informacje o podzbiorze populacji niekoniecznie odzwierciedlają całej populacji. Załóżmy na przykład, że SXG przyspiesza wczytywanie 10% stron o 800 ms.

  • Jeśli było to już 10% najkrótszych czasów wczytywania strony, nie wpłynie to na 75 centyl.
  • Jeśli wczytywanie tych stron należało do 10 najwolniejszych, ale było o ponad 800 ms wolniejsze od 75. procentyla LCP, to w ogóle nie wpłynie to na 75. procentyl.

To przykłady skrajowe, które prawdopodobnie nie odzwierciedlają rzeczywistości, ale mam nadzieję, że pomogą zilustrować problem. W praktyce jest prawdopodobne, że w przypadku większości witryn SXG będzie miało wpływ na 75 centyl. Przechodzenie między witrynami zwykle trwa najdłużej, a poprawa dzięki pobieraniu wstępnemu może być znaczna.

Wykluczanie niektórych adresów URL

Na koniec warto porównać skuteczność SXG, wyłączając ją w przypadku niektórych adresów URL w witrynie. Możesz na przykład ustawić nagłówek CDN-Cache-Control: no-store, aby zapobiec generowaniu przez Cloudflare ASX generowania SXG. Nie zalecam tego.

Z dużym prawdopodobieństwem tkwi w niej większe ryzyko błędów doboru treści niż w przypadku innych metod badawczych. Może to mieć duży wpływ na wyniki, np. czy strona główna Twojej witryny czy inny popularny adres URL zostanie wybrany do grupy kontrolnej lub eksperymentalnej.

Badanie z izolacją grupy eksperymentalnej

Najlepszym sposobem pomiaru wpływu jest przeprowadzenie badania z zatrzymaniem danych. Niestety nie można obecnie wykonać tego typu testów. W przyszłości planujemy wprowadzić obsługę takiego testu.

Badanie z zatrzymaniem danych ma te właściwości:

  • W grupie eksperymentalnej pewna losowa część wyświetleń stron, które miałyby być wyświetlane w ramach SXG, jest „zatrzymywana” i zamiast tego wyświetlana jako strona, która nie jest SXG. Dzięki temu można porównywać ze sobą użytkowników, urządzenia, scenariusze i strony o podobnych cechach.
  • Te odsłony (czyli odrzucone) są odpowiednio oznaczone w statystykach. Dzięki temu możemy uzyskać bardziej szczegółowy widok danych, w którym możemy porównać wczytywanie strony SXG w grupie kontrolnej z wczytywaniem strony SXG w grupie eksperymentalnej. To z kolei redukuje zakłócenia podczas wczytywania innych stron, na które nie miał wpływu pobieranie z wyprzedzeniem SXG.

Pozwoli to wyeliminować wspomniane wyżej możliwe źródła stronnicości doboru, ale nie wyeliminuje ryzyka stronnicości o przetrwaniu w przypadku LCP. Aby włączyć te właściwości, musisz użyć przeglądarki lub witryny odsyłającej.

Podsumowanie

Uff... To było dużo. Mamy nadzieję, że pomoże Ci to lepiej zrozumieć, jak testować wydajność SXG w testach laboratoryjnych, jak optymalizować jej działanie w ramach ścisłej pętli sprzężenia zwrotnego z testem laboratoryjnym oraz jak mierzyć jej skuteczność w rzeczywistych warunkach. Połączenie tych wszystkich elementów powinno pomóc Ci w najlepszym wykorzystaniu plików SXG i zapewnić, że przyniosą one korzyści Twojej witrynie i użytkownikom.

Jeśli masz dodatkowe wskazówki dotyczące rejestrowania wyników SXG, daj nam znać. Zgłoś błąd na stronie developer.chrome.com, podając sugerowane ulepszenia.

Więcej informacji o giełdach podpisanych znajdziesz w dokumentacji web.devdokumentacji wyszukiwarki Google.