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 di più siti.

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

Continua a leggere per scoprire come funziona questa funzionalità, come può contribuire a migliorare notevolmente la metrica Largest Contentful Paint (LCP) dei tuoi siti o come i siti web referrer possono aiutare gli utenti a raggiungere i loro obiettivi accelerando le navigazioni tra 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 ispezionare eventuali trasferimenti di dati. In particolare, anche se il proxy di precaricamento privato vede necessariamente 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 degli utenti.

Inoltre, poiché il canale di comunicazione sicuro è protetto con crittografia 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 di rete descritti in precedenza, dobbiamo anche impedire ai server di identificare un utente al momento di precaricamento tramite le informazioni precedentemente memorizzate sul loro dispositivo. A questo scopo, Chrome attualmente limita l'utilizzo del proxy privato di precaricamento ai siti web per i quali l'utente non ha cookie o altri stati locali. Di seguito sono riportate le limitazioni per le richieste di precaricamento effettuate tramite il proxy di precaricamento privato:

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

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

Memorizzazione nella cache

Chrome precarica le risorse anche se sono già nella cache, ma non avrà intestazioni condizionali come ETag o If-Modified-Since (che contengono valori impostati dal server che potrebbero essere utilizzati per il monitoraggio anche senza cookie). Questo precaricamento viene eseguito per impedire la perdita dello stato della cache del client sul sito web precaricato. Inoltre, Chrome assegna una risorsa precaricata alla cache solo se l'utente decide di visitare il sito web precaricato.

Inizia a utilizzare il proxy di precaricamento privato

Per i proprietari di siti web

Non è richiesta alcuna azione da parte dei proprietari di siti web per iniziare a trarre vantaggio dal 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 una buona idea impressionare i nuovi visitatori o i visitatori occasionali con un'esperienza di caricamento superveloce. Dagli esperimenti passati, abbiamo osservato una velocità compresa tra il 20% e il 30% più veloce di Largest Contentful Paint nelle navigazioni precaricate.

In futuro, ci auguriamo di estendere questa funzionalità ai link con i cookie o gli stati locali mantenendo le caratteristiche relative alla privacy. Il problema dei cookie è che potrebbero essere utilizzati per modificare l'esperienza utente in modi difficili da prevedere. Pertanto, è molto probabile che i proprietari di siti web debbano attivare o modificare il proprio sito per usufruire del proxy di precaricamento privato per i link con cookie.

Concretamente, anche se le richieste di precaricamento rimangono senza credenziali, la pagina web avrà accesso ai cookie e ad altri stati locali quando l'utente vi accede. Gli sviluppatori potrebbero sfruttare questa possibilità per aggiungere nuovamente la personalizzazione e le modifiche in base ai cookie o allo stato locale. Oppure, gli sviluppatori potrebbero anche essere interessati a dichiarare che alcune risorse sono perfettamente precaricate e utilizzabili così come sono, senza cookie (ovvero, risorse che non dipendono da alcun cookie). Consulta la sezione Passaggi successivi per saperne di più e definire il nostro piano.

Contenuti o servizi dipendenti dalla posizione geografica

Se il tuo sito web si comporta in modo diverso (ad esempio, in base a contenuti diversi o accesso selettivo) a seconda dei mercati in base all'indirizzo IP dell'utente, potresti chiederti come gestire le richieste di precaricamento del proxy privato di precaricamento. È importante sapere che il proxy di precaricamento privato è alimentato da diversi server sparsi in tutto il mondo e che l'IP del proxy verrà geolocalizzato in base al 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 dalla presenza di un'intestazione HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Cerca la geolocalizzazione del proxy di precaricamento privato che ha inviato la richiesta tramite il suo indirizzo IP. Consulta questa risorsa per un elenco aggiornato delle aree geografiche implementate e dei corrispondenti indirizzi IP.
  3. Offri le risorse in base al mercato connesso a questa particolare geolocalizzazione.

Controllo del traffico

Sappiamo che, dagli esperimenti passati, questa funzionalità genera in genere meno del 2% di richieste in più per le risorse principali (ad esempio, i documenti HTML). Detto questo, se sei di tipo prudente, puoi utilizzare il campo di frazione del consiglio sul traffico per controllare la quantità di traffico che il proxy di precaricamento privato può far passare. Puoi iniziare con una piccola frazione come 0,3 (ovvero il 30%) e aumentarla gradualmente fino a 1,0 (ovvero il 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 numero in virgola mobile compreso tra 0,0 (nessun precaricamento) e 1,0 (il 100% delle richieste di precaricamento viene superato).

È anche possibile disattivare completamente questa impostazione 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 presso il proxy in base alla consueta semantica della cache HTTP. Per maggiore flessibilità, ad esempio un improvviso picco di accessi intensivi, potresti voler rifiutare temporaneamente le richieste di precaricamento (Sec-Purpose: prefetch;anonymous-client-ip) con un codice di stato 503 e impostare l'intestazione Cache-Control: no-store sulla risposta. Puoi anche aggiungere l'intestazione Retry-After per indicare a Chrome quanto tempo 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, potrebbe interessarti 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 dovrebbe precaricare tramite il proxy di precaricamento privato. Ecco un esempio semplice:

<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. Confidiamo di poter estendere e migliorare questa funzionalità in base all'interesse e ai feedback della community. Ad esempio, ci piacerebbe ricevere il tuo feedback su come espandere i link con cookie e stato locale in modo da ridurre al minimo le difficoltà per gli sviluppatori o su come rendere questa funzionalità più utile per i siti web referrer.

Leggi tutto