Prywatny serwer proxy pobierania z wyprzedzeniem w Chrome

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

Przyspieszanie największego wyrenderowania treści (LCP) dzięki wstępnemu wczytywaniu na wielu stronach.

Począwszy od wersji 103 Chrome na Androida, Chrome będzie stopniowo wdrażać prywatną funkcję predykcji proxy, aby przyspieszyć nawigację z wyszukiwarki Google i innych uczestniczących witryn o średnio 30%. Ta funkcja prywatnego pobierania z wyprzedzeniem umożliwia pobieranie z wyprzedzeniem treści z różnych źródeł bez ujawniania informacji o użytkowniku stronie docelowej, dopóki użytkownik nie przejdzie do tej strony.

Czytaj dalej, aby dowiedzieć się, jak działa ta funkcja, jak może ona znacznie poprawić największy czas wyrenderowania treści (LCP) Twoich witryn oraz jak witryny odsyłające mogą pomagać użytkownikom w realizacji ich celów przez przyspieszenie nawigacji między witrynami.

Jak działa prywatny serwer proxy do pobierania w tle

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łanych danych. Co ważne, chociaż prywatny serwer proxy do pobierania wstępnego musi widzieć nazwę hosta, aby ustanowić bezpieczny kanał komunikacji, nie widzi pełnych adresów URL ani samych zasobów.

Animacja przedstawiająca przepływ danych przez serwer proxy.
Pobieranie wstępne stron internetowych przez serwer proxy CONNECT zapobiega wyciekowi informacji o użytkownikach.

Dodatkowo, ponieważ bezpieczny kanał komunikacji jest szyfrowany w pełni, pośrednicy nie mogą obserwować nazw hostów ani treści wstępnie wczytanych witryn. Wreszcie serwer proxy zapobiega wyświetlaniu adresu IP użytkownika na serwerze docelowym.

Zapobieganie identyfikacji użytkowników

Oprócz aspektów sieciowych, o których wspomnieliśmy wcześniej, musimy też uniemożliwić serwerom identyfikowanie użytkownika w czasie pobierania w poprzednim tle za pomocą informacji wcześniej zapisanych na jego urządzeniu. W tym celu Chrome ogranicza obecnie korzystanie z prywatnego serwera wyprzedzającego do witryn, w 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 istnieje plik cookie dla danego zasobu, Chrome wykona pobieranie bez uwierzytelniania, ale nie użyje odpowiedzi (patrz sekcja Pamięć podręczna).
    • Odpowiedzi na żądanie wstępne mogą zawierać pliki cookie, ale zostaną one zapisane tylko wtedy, gdy użytkownik przejdzie na wstępnie wczytaną stronę.
  • Odcisk palca: dostosowano również inne powierzchnie, które mogłyby służyć do pobierania odcisków palców. Na przykład nagłówek User-Agent wysyłany przez serwer proxy pobierania z wyprzedzeniem zawiera tylko ograniczone informacje.

Mamy nadzieję, że w przyszłości będziemy mogli rozszerzyć prywatne zapory wyprzedzające na linki z plikami cookie lub stanem lokalnym, zachowując przy tym te same cechy dotyczące 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. Ponadto Chrome zapisuje w pamięci podręcznej zasob załadowany w poprzedniości tylko wtedy, gdy użytkownik zdecyduje się przejść do załadowanej wcześniej witryny.

Pierwsze kroki z prywatnym serwerem proxy do pobierania wstępnego

Właściciele 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 ważna możliwość dla większości witryn. Poza tym, dzięki temu, że użytkownicy korzystają z Twojej witryny po raz pierwszy lub rzadko odwiedzają Twoją witrynę, warto zadbać o szybkie wczytywanie się strony. 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.

Mamy nadzieję, że w przyszłości udostępnimy tę funkcję w przypadku linków z plikami cookie lub stanem lokalnym, zachowując przy tym jej cechy związane z prywatnością. Problem z plikami cookie polega na tym, że mogą one być wykorzystywane do zmiany wrażeń użytkowników w trudny do przewidzenia sposób. 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 mogliby wykorzystać tę funkcję, aby przywrócić personalizację i zmiany na podstawie plików cookie lub stanu lokalnego. Deweloperzy mogą też chcieć zadeklarować, że niektóre zasoby można pobierać w ramach wstępnego pobierania i wykorzystywać bez plików cookie (czyli że nie zależą one od żadnych plików cookie). Aby dowiedzieć się więcej i poinformować nas o swoich planach, zapoznaj się z sekcją Co dalej.

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

Jeśli Twoja witryna zachowuje się inaczej (np. wyświetla inne treści lub ogranicza dostęp) na różnych rynkach w zależności od adresu IP użytkownika, możesz się zastanawiać, jak obsługiwać żądania wstępnego pobierania w przypadku prywatnego serwera proxy. Pamiętaj, że prywatny serwer proxy pobierania z wyprzedzeniem jest obsługiwany przez kilka serwerów rozsianych po 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 lokalizację geograficzną prywatnego serwera proxy pobierania z wyprzedzeniem, który wysłał żądanie za pomocą adresu IP. Aktualną listę obsługiwanych regionów i odpowiednich adresów IP znajdziesz w tym artykule.
  3. wyświetlać zasoby zgodnie z rynkiem powiązanym z danym miejscem;

Sterowanie ruchem

Z dotychczasowych eksperymentów wiemy, że ta funkcja zwykle powoduje mniej niż 2% dodatkowych żądań głównych zasobów (np. 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 niewielkiej wartości, np. 0,3 (czyli 30%), i stopniowo zwiększać ją do 1,0 (czyli 100%), dodając do pliku /.well-known/traffic-advice następujący ciąg JSON, który musi być wyświetlany z typem MIME application/trafficadvice+json:

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

Pole fraction to liczba zmiennoprzecinkowa z zakresu od 0,0 (brak wstępnego pobierania) do 1,0 (100% żądań wstępnego pobierania).

Możesz też całkowicie wyłączyć tę funkcję za pomocą tej konfiguracji:

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

Plik /.well-known/traffic-advice jest pobierany przez serwer proxy, a nie przez klienta, i przechowywany w pamięci podręcznej na serwerze proxy zgodnie ze zwykłą semantyką pamięci podręcznej HTTP. Aby zwiększyć elastyczność (np. w przypadku nagłego wzrostu liczby połączeń), możesz tymczasowo odrzucać żądania wstępnego pobierania (Sec-Purpose: prefetch;anonymous-client-ip) za pomocą kodu stanu 503 i ustawienia nagłówka Cache-Control: no-store w odpowiedzi. Możesz też dodać nagłówek Retry-After, aby określić Chrome, jak długo ma czekać przed ponownym wysłaniem żądań w ramach wstępnego pobierania.

Właściciele witryn odsyłających

Jeśli prowadzisz witrynę z dużą liczbą linków do innych witryn, możesz skorzystać z funkcji prywatnego serwera proxy do pobierania wstępnego, aby przyspieszyć nawigację między domenami. Jeśli chcesz, by przeglądarka Chrome wiedziała, którą stronę ma pobierać z wyprzedzeniem przez prywatny serwer proxy pobierania z wyprzedzeniem, musisz dodać do nich 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?

To dopiero pierwszy krok. Mamy nadzieję, że uda nam się rozwinąć i ulepszyć tę funkcję na podstawie zainteresowania społeczności i opinii. Chętnie poznamy Twoją opinię na temat tego, jak rozszerzyć tę funkcję o linki z plikami cookie i stanem lokalnym w sposób, który zminimalizuje problemy deweloperów, lub jak sprawić, aby ta funkcja była bardziej przydatna dla witryn odsyłających.

Więcej informacji