Proxy di precaricamento privato in Chrome

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

Accelerare Largest Contentful Paint (LCP) con il precaricamento tra siti.

A partire da Chrome 103 per Android, Chrome implementerà gradualmente una funzionalità proxy di precaricamento privato per velocizzare le navigazioni in uscita dalla Ricerca Google e da altri siti web partecipanti del 30% rispetto alla mediana. Questa funzionalità proxy di precaricamento privato consente il precaricamento dei contenuti multiorigine senza esporre le informazioni dell'utente al sito web di destinazione finché l'utente non naviga.

Continua a leggere per scoprire come funziona questa funzionalità e come può contribuire a migliorare significativamente i siti Largest Contentful Paint (LCP) o in che modo i siti web dei referrer possono aiutare i propri utenti a raggiungere i loro obiettivi velocizzando la navigazione tra i siti.

Come funziona il proxy di precaricamento privato

Canale di comunicazione sicuro

Questa funzionalità utilizza un proxy CONNECT per stabilire un canale di comunicazione sicuro tra Chrome e il server che ospita i contenuti da precaricare. Questo canale di comunicazione sicuro impedisce al proxy di esaminare eventuali trasferimenti di dati. In particolare, anche se il proxy di precaricamento privato necessariamente vede il nome host per stabilire un canale di comunicazione sicuro, non vede gli URL completi né le risorse stesse.

Animazione che mostra il flusso di dati attraverso un proxy.
Il precaricamento dei siti web tramite un proxy CONNECT impedisce la fuga di informazioni sugli utenti.

Inoltre, poiché il canale di comunicazione sicuro è criptato end-to-end, gli intermediari non possono osservare i nomi host né i contenuti dei siti precaricati. Infine, il proxy impedisce intrinsecamente al server di destinazione di vedere l'indirizzo IP dell'utente.

Impedire l'identificazione degli utenti

Oltre agli aspetti della rete descritti in precedenza, dobbiamo anche impedire ai server di identificare un utente al momento del precaricamento, tramite le informazioni precedentemente memorizzate sul loro dispositivo. A questo scopo, Chrome limita l'utilizzo del proxy di precaricamento privato ai siti web per cui l'utente non ha cookie o altro stato locale. Di seguito sono riportate le limitazioni per le richieste di precaricamento effettuate tramite il proxy di precaricamento privato:

  • Cookie: le richieste di precaricamento non sono autorizzate a trasferire i cookie.
    • Se è presente un cookie per una risorsa, Chrome eseguirà un recupero senza credenziali ma non utilizzerà la risposta (consulta la sezione Memorizzazione nella cache successiva).
    • Sebbene le risposte a una richiesta di precaricamento possano includere cookie, questi cookie vengono salvati solo se l'utente accede alla pagina precaricata.
  • Impronta digitale:vengono regolate anche altre piattaforme che potrebbero essere utilizzate per il fingerprinting. Ad esempio, l'intestazione User-Agent inviata dal proxy di precaricamento trasporta solo informazioni limitate.

In futuro, ci auguriamo di estendere il proxy di precaricamento privato ai link ai cookie o allo stato locale, mantenendo le stesse caratteristiche di privacy. Per ulteriori dettagli, consulta la sezione Passaggi successivi.

Memorizzazione nella cache

Chrome precarica le risorse anche se sono già nella cache, ma non riporteranno alcuna intestazione condizionale come ETag o If-Modified-Since (questi contengono valori impostati dal server che potrebbero essere utilizzati per il monitoraggio anche senza cookie). Questo precaricamento viene effettuato per evitare la fuga dello stato della cache di un client sul sito web precaricato. Inoltre, Chrome eseguirà il commit di una risorsa precaricata nella cache solo se l'utente decide di accedere al sito web precaricato.

Introduzione al proxy di precaricamento privato

Per i proprietari di siti web

Non è richiesta alcuna azione da parte dei proprietari dei siti web per iniziare a usufruire del proxy di precaricamento privato sui link per i quali l'utente non ha cookie o stato locale. Dai nostri esperimenti, questa è un'opportunità significativa per la maggior parte dei siti web. Inoltre, è sempre opportuno stupire i visitatori alla prima visita o quelli occasionali con un'esperienza di caricamento estremamente veloce. Dagli esperimenti passati, abbiamo registrato una velocità maggiore del 20-30% in Largest Contentful Paint nelle navigazioni precaricate.

In futuro, ci auguriamo di estendere questa funzionalità ai link ai cookie o allo stato locale, mantenendo le sue caratteristiche di privacy. Il problema dei cookie è che potrebbero essere utilizzati per alterare l'esperienza utente in modi difficili da prevedere. Pertanto, i proprietari di siti web molto probabilmente dovranno attivare o modificare il proprio sito per trarre vantaggio dal proxy di precaricamento privato per i link con cookie.

Concretamente, mentre le richieste di precaricamento rimarranno senza credenziali, la pagina web otterrà l'accesso ai cookie e ad altri stati locali quando l'utente vi accede. Gli sviluppatori potrebbero sfruttare questa possibilità per aggiungere di nuovo la personalizzazione e le modifiche in base ai cookie o allo stato locale. In alternativa, gli sviluppatori potrebbero anche essere interessati a dichiarare che determinate risorse possono essere precaricate e utilizzate così come sono, senza cookie (ovvero risorse che non dipendono da alcun cookie). Dai un'occhiata alla sezione Passaggi successivi per saperne di più e definire il nostro piano.

Servizi o contenuti che dipendono dall'area geografica

Se il tuo sito web si comporta in modo diverso (ad esempio, contenuti diversi o accesso selettivo) nei vari mercati in base all'indirizzo IP dell'utente, potresti chiederti come gestire le richieste di precaricamento del proxy di precaricamento privato. È importante sapere che il proxy di precaricamento privato è basato su diversi server dislocati in tutto il mondo e che l'IP del proxy verrà geolocalizzato nel paese da cui l'utente ha avviato il precaricamento.

Alla luce di ciò, consigliamo quanto segue:

  1. Identifica le richieste di precaricamento dal proxy di precaricamento privato in base alla presenza di un'intestazione HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Cerca la geolocalizzazione del proxy di precaricamento privato che ha emesso la richiesta tramite il relativo indirizzo IP. Consulta questa risorsa per un elenco aggiornato delle aree geografiche implementate e degli indirizzi IP corrispondenti.
  3. Fornisci le risorse in base al mercato associato a questa particolare geolocalizzazione.

Controllo del traffico

Dagli esperimenti passati, sappiamo che questa funzionalità di solito genera meno del 2% in più di richieste per le risorse principali (ad esempio, documenti HTML). Detto questo, se sei più prudente, puoi utilizzare il campo frazione dei consigli sul traffico per controllare il volume di traffico che il proxy di precaricamento privato deve lasciare passare. Puoi iniziare con una piccola frazione, come 0,3 (ovvero 30%) e aumentarla gradualmente fino a 1, 0 (ovvero 100%) aggiungendo il seguente JSON a un file /.well-known/traffic-advice, che deve essere pubblicato con il tipo MIME application/trafficadvice+json:

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

Il campo fraction è un valore in virgola mobile compreso tra 0,0 (nessun precaricamento) e 1,0 (il 100% delle richieste di precaricamento viene inviato).

È anche possibile disabilitarlo completamente con la seguente configurazione:

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

Il file /.well-known/traffic-advice viene recuperato dal proxy, non dal client, e memorizzato nella cache del proxy in base alla consueta semantica della cache HTTP. Per maggiore flessibilità, ad esempio un picco improvviso di accessi intensivi, ti consigliamo di rifiutare temporaneamente le richieste di precaricamento (Sec-Purpose: prefetch;anonymous-client-ip) con codice di stato 503 e impostando l'intestazione Cache-Control: no-store nella risposta. Puoi anche aggiungere l'intestazione Retry-After per indicare a Chrome quanto tempo deve attendere prima di riprovare le richieste di precaricamento.

Per i proprietari di siti web referrer

Se gestisci un sito web con molti link ad altri siti web, ti potrebbe interessare utilizzare la funzionalità proxy di precaricamento privato per velocizzare queste navigazioni multiorigine. Dovrai aggiungere regole di speculazione alle tue pagine affinché Chrome sappia quale pagina ritieni che debba eseguire il precaricamento tramite proxy di precaricamento privato. Ecco un semplice esempio:

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

Passaggi successivi

Questo lancio è solo un primo passo. Ci auguriamo di estendere e migliorare questa funzionalità in base agli interessi e ai feedback della community. Ad esempio, vorremmo ricevere feedback su come espandere i link con cookie e stato locale in modo da ridurre al minimo l'attrito per gli sviluppatori, o su come rendere questa funzionalità più utile per i siti web referrer.

Leggi tutto