Prywatny serwer proxy pobierania z wyprzedzeniem w Chrome

Katie Hempenius
Katie Hempenius
Kenji Baheux
Kenji Baheux
Michael Buettner
Michael Buettner

Przyspieszenie największego wyrenderowania treści (LCP) dzięki wstępnemu pobieraniu treści z różnych witryn.

Począwszy od wersji Chrome 103 na Androida, Chrome będzie stopniowo wprowadzać funkcję prywatnego serwera proxy pobierania z wyprzedzeniem, która przyspieszy nawigację z wyszukiwarki Google i innych witryn uczestniczących w programie o 30% średnio o 30%. Ta funkcja prywatnego serwera proxy pobierania z wyprzedzeniem umożliwia wstępne pobieranie treści z innych domen bez ujawniania informacji o użytkowniku w witrynie docelowej, dopóki użytkownik nie przejdzie do niej.

Czytaj dalej, aby dowiedzieć się, jak działa ta funkcja i jak może przyczynić się do poprawy skuteczności witryn największe wyrenderowanie treści (LCP), czyli jak witryny odsyłające mogą pomóc użytkownikom w osiągnięciu ich celów przez przyspieszenie nawigacji w innych witrynach.

Jak działa prywatny serwer proxy pobierania z wyprzedzeniem

Bezpieczny kanał komunikacji

Ta funkcja używa serwera proxy CONNECT do ustanowienia bezpiecznego kanału komunikacji między Chrome a serwerem hostującym treści do wstępnego pobrania. Ten bezpieczny kanał komunikacji uniemożliwia serwerowi proxy sprawdzanie przesyłania danych. Warto zauważyć, że prywatny serwer proxy pobierania z wyprzedzeniem widzi nazwę hosta, aby ustanowić bezpieczny kanał komunikacji, ale nie widzi pełnych adresów URL ani samych zasobów.

Animacja pokazująca przepływ danych przez serwer proxy.
Wstępne pobieranie stron przez serwer proxy CONNECT zapobiega wyciekom informacji o użytkownikach.

Poza tym bezpieczny kanał komunikacyjny jest w pełni szyfrowany, więc pośrednicy nie widzą nazw hostów ani treści pobieranych wstępnie witryn. Serwer proxy same w sobie uniemożliwia serwerowi docelowemu poznanie adresu IP użytkownika.

Zapobieganie identyfikacji użytkowników

Oprócz opisanych wcześniej aspektów związanych z siecią musimy też zapobiegać identyfikowaniu użytkownika w czasie pobierania z wyprzedzeniem na podstawie informacji przechowywanych wcześniej na jego urządzeniu. W związku z tym Chrome ogranicza obecnie możliwość używania prywatnego serwera proxy pobierania z wyprzedzeniem do witryn, w przypadku których użytkownik nie ma plików cookie ani innego stanu lokalnego. Oto ograniczenia dla żądań pobierania z wyprzedzeniem wysyłanych przez prywatny serwer proxy pobierania z wyprzedzeniem:

  • Pliki cookie: żądania wstępnego pobierania nie mogą zawierać plików cookie.
    • Jeśli dla zasobu jest plik cookie, Chrome wykona pobieranie bez danych uwierzytelniających, ale nie użyje odpowiedzi (patrz sekcja Pamięć podręczna).
    • Chociaż odpowiedzi na żądanie pobierania z wyprzedzeniem mogą zawierać pliki cookie, zostaną one zapisane tylko wtedy, gdy użytkownik otworzy stronę.
  • Odciski palców: dostosujemy też inne platformy, których można używać do odcisków palców. Na przykład nagłówek User-Agent wysyłany przez serwer proxy pobierania z wyprzedzeniem zawiera tylko ograniczone informacje.

W przyszłości zamierzamy rozszerzyć prywatny serwer proxy pobierania z wyprzedzeniem o linki z plikami cookie lub stanem lokalnym przy zachowaniu tych samych cech prywatności. Więcej informacji znajdziesz w sekcji Co dalej.

Pamięć podręczna

Chrome będzie wstępnie pobierać zasoby, nawet jeśli znajdują się już w pamięci podręcznej, ale nie będą zawierały żadnych nagłówków warunkowych, takich jak ETag czy If-Modified-Since (zawierają wartości ustawione przez serwer, których można używać do śledzenia nawet bez plików cookie). Pobieranie z wyprzedzeniem ma zapobiegać wyciekowi stanu pamięci podręcznej klienta do pobieranej z wyprzedzeniem witryny. Dodatkowo Chrome zapisze wstępnie pobrany zasób w pamięci podręcznej tylko wtedy, gdy użytkownik zdecyduje się otworzyć taką stronę.

Pierwsze kroki z prywatnym serwerem proxy pobierania z wyprzedzeniem

Dla właścicieli witryn

Właściciele witryn nie muszą podejmować żadnych działań, aby zacząć korzystać z prywatnego serwera proxy pobierania z wyprzedzeniem w przypadku linków, w przypadku których użytkownik nie ma plików cookie ani stanu lokalnego. Z naszych eksperymentów wynika, że jest to duża szansa dla większości witryn. Poza tym superszybkie wczytywanie się strony pomoże Ci zrobić wrażenie na osobach, które odwiedzają ją po raz pierwszy, lub tych, którzy rzadko ją odwiedzają. Na podstawie wcześniejszych eksperymentów zauważyliśmy od 20% do 30% szybsze osiągnięcie największego wyrenderowania treści w przypadku pobranych z wyprzedzeniem elementów nawigacyjnych.

W przyszłości mamy nadzieję rozszerzyć tę funkcję na linki z plikami cookie lub informacjami o stanie lokalnym przy zachowaniu odpowiednich cech prywatności. Problem z plikami cookie polega na tym, że mogą one w trudno przewidywać wpływ na wrażenia użytkownika. W związku z tym właściciele witryn najprawdopodobniej będą musieli włączyć lub dostosować swoje witryny, aby korzystać z prywatnego serwera proxy pobierania z wyprzedzeniem w przypadku linków z plikami cookie.

Chociaż żądania pobierania z wyprzedzeniem pozostaną bez danych uwierzytelniających, strona internetowa uzyska dostęp do plików cookie i innego stanu lokalnego, gdy użytkownik ją otworzy. Deweloperzy mogą wykorzystać tę możliwość, aby przywrócić personalizację i zmiany na podstawie plików cookie lub stanu lokalnego. Możliwe też, że deweloperzy mogą również zadeklarować, że określone zasoby mogą być wstępnie pobierane i używane bez plików cookie (czyli zasobów, które nie wymagają plików cookie). Przeczytaj sekcję Co dalej, aby dowiedzieć się więcej i opracować nasz plan.

Treści lub usługi zależne od lokalizacji geograficznej

Jeśli Twoja witryna działa inaczej (np. różne treści lub dostęp selektywny) w zależności od adresu IP użytkownika, możesz się zastanawiać, jak postępować z żądaniami pobierania z wyprzedzeniem, które są wysyłane przez prywatny serwer proxy pobierania z wyprzedzeniem. Pamiętaj, że prywatny serwer proxy pobierania z wyprzedzeniem jest obsługiwany przez kilka serwerów rozmieszczonych na całym świecie, a adres IP takiego serwera będzie wskazywać kraj, z którego użytkownik zainicjował pobieranie z wyprzedzeniem.

Mając to na uwadze, zalecamy:

  1. Żądania pobierania z wyprzedzeniem można identyfikować z prywatnego serwera proxy pobierania z wyprzedzeniem na podstawie nagłówka HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Wyszukaj geolokalizację prywatnego serwera proxy pobierania z wyprzedzeniem, który wysłał żądanie, korzystając z jego adresu IP. Aktualną listę wdrożonych regionów geograficznych i odpowiadających im adresów IP znajdziesz w tych materiałach.
  3. Udostępniaj zasoby zgodnie z rynkiem powiązanym z konkretną geolokalizacją.

Sterowanie ruchem

Z wcześniejszych eksperymentów wynika, że ta funkcja zwykle generuje mniej niż 2% dodatkowych żądań dotyczących głównych zasobów (na przykład dokumentów HTML). Jeśli jednak jesteś ostrożny, możesz użyć pola ułamka w poradach dotyczących ruchu, aby określić, jaki ruch ma przepuszczać prywatny serwer proxy pobierania z wyprzedzeniem. Możesz zacząć od małego ułamka, np. 0,3 (czyli 30%), a potem stopniowo zwiększać go do 1,0 (czyli 100%), dodając do pliku /.well-known/traffic-advice ten kod JSON, który musi być udostępniany z typem MIME application/trafficadvice+json:

[{
  "user_agent": "prefetch-proxy",
  "fraction": 0.3
}]

Pole fraction zawiera wartość zmiennoprzecinkową z zakresu od 0,0 (ogólnie brak pobierania z wyprzedzeniem) do 1,0 (przez co dociera 100% żądań pobierania z wyprzedzeniem).

To ustawienie można też całkowicie wyłączyć przy użyciu następującej konfiguracji:

[{
  "user_agent": "prefetch-proxy",
  "disallow": true
}]

Plik /.well-known/traffic-advice jest pobierany przez serwer proxy, a nie klienta, i jest buforowany przez serwer proxy zgodnie ze zwykłą semantyką pamięci podręcznej HTTP. Aby zapewnić większą elastyczność – na przykład nagły szczyt intensywnego dostępu – możesz tymczasowo odrzucać żądania pobierania z wyprzedzeniem (Sec-Purpose: prefetch;anonymous-client-ip) z kodem stanu 503 i ustawiając w odpowiedzi nagłówek Cache-Control: no-store. Możesz też dodać nagłówek Retry-After, aby poinformować Chrome, jak długo ma czekać przed ponowną próbą pobierania z wyprzedzeniem.

Właściciele witryn odsyłających

Jeśli prowadzisz witrynę z wieloma linkami do innych witryn, być może zainteresuje Cię funkcja Private Prefetch Proxy, która pozwoli przyspieszyć nawigację między domenami. Jeśli chcesz, by przeglądarka Chrome wiedziała, którą stronę ma pobierać z wyprzedzeniem, używając prywatnego serwera proxy pobierania z wyprzedzeniem, musisz dodać do niej reguły spekulacyjne. Oto prosty przykład:

<script type="speculationrules">
{
  "prefetch": [
    "source": "list",
    "urls": ["https://example.com/index.html"],
    "requires": ["anonymous-client-ip-when-cross-origin"]
  ]
}
</script>

Co dalej?

Wprowadzenie tej funkcji to dopiero pierwszy krok. Mamy nadzieję, że będziemy ją rozwijać i doskonalić na podstawie zainteresowania społeczności i jej opinii. Chętnie dowiemy się na przykład, jak rozszerzyć na linki z plikami cookie i stanem lokalnym w sposób, który minimalizuje problemy ze strony programistów, lub jak ulepszyć tę funkcję w przypadku witryn odsyłających.

Więcej informacji