Proxy privado de carga previa en Chrome

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

Aceleración del procesamiento de imagen con contenido más grande (LCP) con carga previa entre sitios

A partir de Chrome 103 para Android, Chrome lanzará gradualmente una función de proxy de carga previa privada para acelerar las navegaciones salientes desde la Búsqueda de Google y otros sitios web participantes en un 30% en la mediana. Esta función de proxy de carga previa privada permite la carga previa de contenido de origen cruzado sin exponer la información del usuario al sitio web de destino hasta que el usuario navegue.

Continúa leyendo para obtener más información sobre cómo funciona esta función y cómo puede ayudarte a mejorar significativamente el uso de tus sitios Largest Contentful Paint (LCP) o cómo los sitios web de referencia pueden ayudar a sus usuarios a lograr sus objetivos acelerando las navegaciones entre sitios

Cómo funciona Private Prefetch Proxy

Canal de comunicación seguro

Esta función usa un proxy CONNECT para establecer un canal de comunicación seguro entre Chrome y el servidor que aloja el contenido que se realizará la carga previa. Este canal de comunicación seguro evita que el proxy inspeccione cualquier transferencia de datos. En particular, si bien Private Prefetch Proxy ve necesariamente el nombre del host para establecer un canal de comunicación seguro, no ve las URLs completas ni los recursos en sí.

Animación que muestra el flujo de datos a través de un proxy.
La carga previa de sitios web a través de un proxy CONNECT evita que se filtre información del usuario.

Además, debido a que el canal de comunicación seguro está encriptado de extremo a extremo, los intermediarios no pueden ver los nombres de host ni el contenido de los sitios cargados previamente. Por último, el proxy impide de forma inherente que el servidor de destino vea la dirección IP del usuario.

Impedir la identificación de usuarios

Más allá de los aspectos de red detallados anteriormente, también necesitamos evitar que los servidores identifiquen a un usuario en el momento de la carga previa a través de la información almacenada previamente en su dispositivo. Con ese fin, Chrome actualmente restringe el uso de Private Prefetch Proxy a sitios web para los que el usuario no tiene cookies ni otro estado local. Estas son las restricciones para las solicitudes de carga previa realizadas a través de Private Prefetch Proxy:

  • Cookies: No se permite que las solicitudes de carga previa lleven cookies.
    • Si hay una cookie para un recurso, Chrome realizará una recuperación sin credenciales, pero no usará la respuesta (consulta la sección Almacenamiento en caché más adelante).
    • Aunque las respuestas a una solicitud de carga previa pueden incluir cookies, estas solo se guardarán si el usuario navega a la página solicitada previamente.
  • Huella digital: También se ajustan otras superficies que podrían usarse para la creación de huellas digitales. Por ejemplo, el encabezado User-Agent que envía el proxy de carga previa solo contiene información limitada.

En el futuro, esperamos expandir Private Prefetch Proxy a vínculos con cookies o estados locales y, al mismo tiempo, mantener las mismas características de privacidad. Consulta la sección Próximos pasos para obtener más detalles.

Almacenamiento en caché

Chrome solicitará los recursos con anticipación incluso si ya están en la caché, pero no llevarán ningún encabezado condicional como ETag o If-Modified-Since (que contienen valores establecidos por el servidor que podrían usarse para el seguimiento incluso sin cookies). Esta carga previa se realiza para evitar que se filtre el estado de caché de un cliente en el sitio web solicitado previamente. Además, Chrome solo confirmará un recurso solicitado previamente a la caché si el usuario decide navegar al sitio web solicitado previamente.

Comienza a usar el proxy de carga previa privada

Para propietarios de sitios web

Los propietarios de sitios web no tienen que realizar ninguna acción para comenzar a beneficiarse del proxy de carga previa privada en vínculos para los cuales el usuario no tiene cookies ni estado local. Según nuestros experimentos, esta es una oportunidad importante para la mayoría de los sitios web. Además, siempre es buena idea impresionar a los visitantes nuevos o poco frecuentes con una experiencia de carga muy rápida. En experimentos anteriores, observamos entre un 20% y un 30% más rápido de Largest Contentful Paint en las navegaciones con carga previa.

En el futuro, esperamos expandir esta función a vínculos con cookies o estados locales y, al mismo tiempo, mantener sus características de privacidad. El desafío que presentan las cookies es que podrían usarse para alterar la experiencia del usuario de formas difíciles de predecir. Por lo tanto, lo más probable es que los propietarios de los sitios web tengan que habilitar o ajustar su sitio para beneficiarse de Private Prefetch Proxy para vínculos con cookies.

En concreto, si bien las solicitudes de carga previa no se acreditarán en las credenciales, la página web obtendrá acceso a cookies y a otros estados locales cuando el usuario navegue hacia ella. Los desarrolladores pueden aprovechar esto para volver a agregar la personalización y los cambios basados en las cookies o el estado local. O quizás los desarrolladores también podrían estar interesados en declarar ciertos recursos como perfectamente buenos para precargar y usar sin cookies (es decir, recursos que no dependen de ninguna cookie). Consulta la sección Próximos pasos para obtener más información y fundamentar nuestro plan.

Contenido o servicios que dependen de la ubicación geográfica

Si tu sitio web se comporta de forma diferente (por ejemplo, contenido diferente o acceso selectivo) en los diferentes mercados según la dirección IP del usuario, tal vez te preguntes cómo administrar las solicitudes de carga previa de Private Prefetch Proxy. Es importante saber que Private Prefetch Proxy funciona con varios servidores distribuidos por todo el mundo y que la IP del proxy se ubicará geográficamente en el país desde el que el usuario inició la carga previa.

Con esto en mente, esto es lo que recomendamos:

  1. Identifica las solicitudes de carga previa del Private Prefetch Proxy mediante la presencia de un encabezado HTTP Sec-Purpose: Prefetch; anonymous-client-ip.
  2. Buscar la ubicación geográfica del Private Prefetch Proxy que emitió la solicitud a través de su dirección IP Consulta este recurso para obtener una lista actualizada de las ubicaciones geográficas implementadas y sus direcciones IP correspondientes.
  3. Entrega recursos de acuerdo con el mercado vinculado a esta ubicación geográfica en particular.

Control del tráfico

Según experimentos anteriores, sabemos que esta función suele generar menos de un 2% adicional de solicitudes de recursos principales (por ejemplo, documentos HTML). Dicho esto, si eres cauteloso, puedes usar el campo de fracción de consejos de tráfico para controlar la cantidad de tráfico que Private Prefetch Proxy debe dejar pasar. Puedes comenzar con una pequeña fracción, como 0.3 (es decir, el 30%), y aumentarla gradualmente a 1.0 (es decir, el 100%). Para ello, agrega el siguiente JSON a un archivo /.well-known/traffic-advice, que debe entregarse con el tipo de MIME application/trafficadvice+json:

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

El campo fraction es un número de punto flotante entre 0.0 (sin carga previa en absoluto) y 1.0 (el 100% de las solicitudes de carga previa se transfieren).

También es posible inhabilitar esto por completo con la siguiente configuración:

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

El proxy recupera el archivo /.well-known/traffic-advice, no el cliente, y lo almacena en caché en el proxy según la semántica habitual de caché HTTP. Para obtener más flexibilidad, por ejemplo, un pico repentino de acceso pesado, es posible que desees rechazar de forma temporal las solicitudes de carga previa (Sec-Purpose: prefetch;anonymous-client-ip) con un código de estado 503 y configurar el encabezado Cache-Control: no-store en la respuesta. También puedes agregar el encabezado Retry-After para indicar a Chrome cuánto tiempo debe esperar antes de reintentar las solicitudes de carga previa.

Para propietarios de sitios web referentes

Si administras un sitio web con muchos vínculos a otros sitios web, puede que te interese usar la función Private Prefetch Proxy para acelerar estas navegaciones de origen cruzado. Deberás agregar reglas de especulación a tus páginas para que Chrome sepa qué página crees que debe cargar previamente a través de Private Prefetch Proxy. Aquí hay un ejemplo simple:

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

Próximos pasos

Este lanzamiento es solo el primer paso. Esperamos expandir y mejorar esta función en función de los intereses y los comentarios de la comunidad. Por ejemplo, nos encantaría recibir comentarios sobre cómo expandir los vínculos con cookies y el estado local de un modo que minimice la fricción para los desarrolladores o sobre cómo hacer que esta función sea más útil para los sitios web de referencia.

Más información