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 z innych witryn.

Począwszy od Chrome 103 na Androida, Chrome będzie stopniowo wprowadzać funkcję prywatnego serwera proxy pobierania z wyprzedzeniem, aby przyśpieszyć nawigację z wyszukiwarki Google i innych stron uczestniczących w projekcie o 30% przy medianie. Ta funkcja prywatnego serwera proxy pobierania z wyprzedzeniem umożliwia wstępne pobieranie treści z innych domen bez ujawniania informacji o użytkowniku witrynie docelowej, dopóki użytkownik się nie otworzy.

Czytaj dalej, aby dowiedzieć się, jak działa ta funkcja, jak może pomóc znacząco poprawić wyrenderowanie treści (LCP) i jak witryny odsyłające mogą pomóc użytkownikom w osiągnięciu celów dzięki przyspieszeniu nawigacji między witrynami.

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 pobrania z wyprzedzeniem. Ten bezpieczny kanał komunikacji uniemożliwia serwerowi proxy sprawdzanie przesyłania danych. W szczególności chociaż prywatny serwer proxy pobierania z wyprzedzeniem zawsze widzi nazwę hosta w celu ustanowienia bezpiecznego kanału komunikacji, nie widzi pełnych adresów URL ani samych zasobów.

Animacja pokazująca przepływ danych przez serwer proxy.
Pobieranie stron z wyprzedzeniem za pomocą serwera proxy CONNECT zapobiega wyciekom informacji o użytkownikach.

Poza tym bezpieczny kanał komunikacji jest w pełni zaszyfrowany, dlatego pośrednicy nie mogą obserwować nazw hostów ani treści pobieranych z wyprzedzeniem witryn. Serwer proxy z zasady uniemożliwia serwerowi docelowemu sprawdzenie adresu IP użytkownika.

Zapobieganie identyfikacji użytkownika

Poza aspektami związanymi z siecią, które omówiliśmy wcześniej, musimy też uniemożliwić serwerom identyfikowanie użytkownika podczas pobierania z wyprzedzeniem na podstawie informacji zapisanych wcześniej na jego urządzeniu. W związku z tym Chrome ogranicza obecnie możliwość korzystania z prywatnego serwera proxy pobierania z wyprzedzeniem na stronach, z których użytkownik nie ma plików cookie ani z innego stanu lokalnego. Oto ograniczenia dotyczące żądań pobierania z wyprzedzeniem wysyłanych za pomocą prywatnego serwera proxy pobierania z wyprzedzeniem:

  • Pliki cookie: w żądaniach wstępnego pobierania nie można przesyłać plików cookie.
    • Jeśli zasób ma plik cookie, Chrome wykona pobieranie bez danych uwierzytelniających, ale nie użyje odpowiedzi (patrz później sekcja Zapisywanie w pamięci podręcznej).
    • Odpowiedzi na żądanie pobierania z wyprzedzeniem mogą zawierać pliki cookie, ale zostaną one zapisane tylko wtedy, gdy użytkownik przejdzie na stronę wstępnie pobraną.
  • Odcisk palca: dostosowujemy też inne platformy, na których można używać odcisków palców. Na przykład nagłówek User-Agent wysłany przez serwer proxy pobierania z wyprzedzeniem zawiera tylko ograniczone informacje.

W przyszłości mamy nadzieję rozszerzyć prywatny serwer proxy pobierania z wyprzedzeniem o linki z plikami cookie lub o stanie lokalnym, zachowując przy tym te same zasady ochrony prywatności. Więcej informacji znajdziesz w sekcji Co dalej.

Zapisywanie w pamięci podręcznej

Chrome będzie pobierać zasoby z wyprzedzeniem, nawet jeśli znajdują się one już w pamięci podręcznej, ale nie będą miały żadnych nagłówków warunkowych, takich jak ETag czy If-Modified-Since (zawierają wartości ustawione przez serwer, które mogą być używane do śledzenia nawet bez plików cookie). Pobieranie z wyprzedzeniem ma zapobiec wyciekowi stanu pamięci podręcznej klienta do wstępnie pobranej witryny. Poza tym Chrome przekazuje z wyprzedzeniem zasób do pamięci podręcznej tylko wtedy, gdy użytkownik zdecyduje się przejść do wstępnie pobranej witryny.

Pierwsze kroki z prywatnym serwerem proxy pobierania z wyprzedzeniem

Dla właścicieli witryn

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, nie muszą nic robić. Z naszych eksperymentów wynika, że jest to doskonała okazja dla większości witryn. Warto też zrobić wrażenie na użytkownikach, którzy odwiedzają ją po raz pierwszy lub rzadko odwiedzający, ponieważ strona się wczytuje bardzo szybko. Z wcześniejszych eksperymentów wynika, że największe wyrenderowanie treści jest szybsze o 20–30% w przypadku wstępnie pobranych elementów nawigacyjnych.

W przyszłości mamy nadzieję rozszerzyć tę funkcję o powiązania z plikami cookie lub informacjami o stanie lokalnym, a jednocześnie zachować zasady dotyczące prywatności. Problem z plikami cookie polega na tym, że mogą one być wykorzystywane do zmieniania wrażeń użytkownika w trudny do przewidzenia sposób. W związku z tym właściciele witryn najprawdopodobniej będą musieli włączyć lub dostosować witrynę, aby korzystać z prywatnego serwera proxy pobierania z wyprzedzeniem w przypadku linków z plikami cookie.

W konkretnie, choć żądania pobierania z wyprzedzeniem pozostaną bez danych uwierzytelniających, strona internetowa uzyska dostęp do plików cookie i innych stanów lokalnych, gdy użytkownik przejdzie do niej. Deweloperzy mogą to wykorzystać, aby przywrócić personalizację i zmiany zależne od plików cookie lub stanu lokalnego. Deweloperzy mogą być też zainteresowani zadeklarowaniem, że określone zasoby są dobrze pobierane z wyprzedzeniem i używane bez plików cookie (czyli zasoby, które nie wymagają plików cookie). Zajrzyj do sekcji Co dalej, aby dowiedzieć się więcej i zapoznać się z naszym planem.

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

Jeśli Twoja witryna zachowuje się inaczej (np. z powodu różnych treści lub selektywnego dostępu) na różnych rynkach w zależności od adresu IP użytkownika, możesz się zastanawiać, jak obsługiwać żądania wstępnego pobierania z wyprzedzeniem 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 rozsianych po całym świecie, a adres IP serwera proxy prowadzi geolokalizację do kraju, z którego użytkownik zainicjował pobieranie z wyprzedzeniem.

Mając to na uwadze, zalecamy:

  1. Identyfikowanie żądań pobierania z wyprzedzeniem z prywatnego serwera proxy pobierania z wyprzedzeniem przez obecność nagłówka HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Wyszukaj geolokalizację prywatnego serwera proxy pobierania z wyprzedzeniem, który wysłał żądanie przez jego adres IP. Aktualną listę wdrożonych regionów i odpowiadających im adresów IP znajdziesz w tym zasobie.
  3. Udostępniaj zasoby zgodnie z rynkiem powiązanym z tą konkretną geolokalizacją.

Sterowanie ruchem

Z wcześniejszych eksperymentów wiemy, że dzięki tej funkcji liczba żądań dotyczących głównych zasobów (na przykład dokumentów HTML) zwykle jest mniejsza o 2%. Jeśli jednak chcesz zachować ostrożność, możesz skorzystać z pola ułamka w poradach dotyczących ruchu, aby kontrolować, ile ruchu ma przepuszczać prywatny serwer proxy pobierania z wyprzedzeniem. Możesz zacząć od małego ułamka, na przykład 0,3 (czyli 30%), i stopniowo zwiększać go do 1,0 (czyli 100%), dodając do pliku /.well-known/traffic-advice poniższy kod JSON, który ma być udostępniany z typem MIME application/trafficadvice+json:

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

Pole fraction jest liczbą zmiennoprzecinkową między 0,0 (brak wstępnego pobierania) a 1,0 (100% żądań pobierania z wyprzedzeniem dociera do celu).

Możesz też całkowicie wyłączyć tę funkcję, korzystając z następującej konfiguracji:

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

Plik /.well-known/traffic-advice jest pobierany przez serwer proxy, a nie przez klienta, i zapisywane w pamięci podręcznej na serwerze proxy zgodnie z typową semantyką pamięci podręcznej HTTP. Aby uzyskać większą elastyczność, na przykład w przypadku nagłego zwiększenia dostępu, możesz tymczasowo odrzucać żądania pobierania z wyprzedzeniem (Sec-Purpose: prefetch;anonymous-client-ip) z kodem stanu 503 oraz ustawiając w odpowiedzi nagłówek Cache-Control: no-store. Możesz też dodać nagłówek Retry-After, aby poinformować Chrome, ile czasu ma czekać przed ponowną próbą pobrania z wyprzedzeniem.

Właściciele witryn odsyłających

Jeśli prowadzisz witrynę z wieloma linkami do innych witryn, możesz skorzystać z funkcji prywatnego serwera proxy pobierania z wyprzedzeniem, aby przyspieszyć nawigację między domenami. Aby określić, którą stronę ma pobierać z wyprzedzeniem przez prywatny serwer proxy pobierania z wyprzedzeniem, musisz dodać do swoich stron 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 rozwijać i ulepszać tę funkcję zgodnie z zainteresowaniami społeczności i opiniami. Chętnie na przykład zapoznamy się z informacjami na temat rozszerzania linków z plikami cookie i stanu lokalnego w sposób, który pozwoli zminimalizować problemy programistów, lub o sposobach na zwiększenie przydatności tej funkcji w przypadku witryn odsyłających.

Więcej informacji