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 innej 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 korzysta z serwera proxy CONNECT, aby nawiązać bezpieczny kanał komunikacji między Chrome a serwerem, na którym znajdują się treści do pobrania z wyprzedzeniem. Ten bezpieczny kanał komunikacji uniemożliwia serwerowi proxy sprawdzanie przesyłanych danych. Pamiętaj, że 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. W końcu serwer proxy uniemożliwia serwerowi docelowemu wyświetlenie adresu IP użytkownika.

Zapobieganie identyfikacji użytkowników

Poza aspektami sieciowymi, o których wspomnieliśmy wcześniej, musimy też uniemożliwić serwerom identyfikowanie użytkownika w czasie pobierania w poprzednim planie 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 dotyczące żądań wstępnego pobierania za pomocą prywatnego serwera proxy:

  • 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 do pobierania w poprzednim planie zawiera tylko ograniczoną ilość informacji.

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 te same cechy dotyczące prywatności. Więcej informacji znajdziesz w sekcji Co dalej.

Pamięć podręczna

Chrome będzie pobierać zasoby w ramach wstępnego pobierania nawet wtedy, gdy są one już w pamięci podręcznej, ale nie będą zawierać nagłówków warunkowych, takich jak ETag czy If-Modified-Since (zawierają one wartości ustawione przez serwer, które można wykorzystać do śledzenia nawet bez plików cookie). Ta operacja jest wykonywana, aby zapobiec wyciekowi stanu pamięci podręcznej klienta do witryny z zaciągniętymi z wyprzedzeniem danymi. Ponadto Chrome zapisuje w pamięci podręcznej zasob załadowany w poprzedniości tylko wtedy, gdy użytkownik przejdzie na stronę, która została w ten sposób załadowana.

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 których przypadku 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 zawsze warto zaimponować nowym użytkownikom lub tym, którzy rzadko odwiedzają Twoją witrynę, błyskawicznym wczytywaniem. Z dotychczasowych eksperymentów wynika, że w przypadku wcześniej pobieranych elementów nawigacji udało nam się skrócić czas największego wyrenderowania treści o 20–30%.

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łaściciele witryn będą więc musieli się zarejestrować lub dostosować swoje witryny, aby korzystać z usługi Private Prefetch Proxy w przypadku linków z plikami cookie.

W konkretnym przypadku, gdy żądania wstępnego pobierania pozostaną bez autoryzacji, strona internetowa uzyska dostęp do plików cookie i innych danych stanu lokalnego, gdy użytkownik na nią wejdzie. 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 do pobierania wstępnego korzysta z kilku serwerów rozmieszczonych na całym świecie, a adres IP tego serwera proxy będzie wskazywać na kraj, z którego użytkownik zainicjował pobieranie wstępne.

Mając to na uwadze, zalecamy:

  1. żądania wstępnego pobierania z Private Prefetch Proxy można rozpoznać po obecności 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ń dotyczących głównych zasobów (np. dokumentów HTML). Jeśli jednak wolisz zachować ostrożność, możesz użyć pola ułamka w sekcji „Porada dotycząca ruchu”, aby określić, ile ruchu prywatny serwer proxy do pobierania w tle powinien przepuścić. Możesz zacząć od małej 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 zapisuje się 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. Aby Chrome wiedział, które strony powinny być pobierane z zaproszczeniem za pomocą prywatnego serwera proxy, musisz dodać do nich reguły spekulacji. 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