Publicación dinámica

La publicación dinámica es una configuración en la que el servidor responde con diferentes archivos HTML y CSS cuando se solicita la misma URL en función del user-agent que haya enviado la solicitud, ya sea de móviles, tablets u ordenadores.

Al usar esta configuración, no es del todo evidente que el código HTML del sitio web cambia si lo solicita un user-agent para móviles, porque el contenido para móviles está "oculto" si se rastrea con un user-agent para ordenadores. Por tanto, recomendamos que se envíe desde el servidor una indicación para solicitar que el robot de Google para smartphones también rastree la página y así pueda detectar el contenido para móviles. Esta indicación se implementa mediante la cabecera HTTP Vary.

Con la publicación dinámica se envía un código distinto para cada dispositivo, pero en la misma URL.

TL;DR

  • Utiliza la cabecera HTTP Vary para indicar los cambios en función del agente de usuario.
  • Detecta correctamente las cadenas de agente de usuario.

Cabecera HTTP Vary

El uso de la cabecera HTTP Vary tiene dos implicaciones importantes y útiles:

  • Señala a los servidores de caché que se usan en ISP y en otros lugares que deben tener en consideración al agente de usuario a la hora de decidir si se proporciona la página desde la caché o no. Si no se usa esta cabecera, se podría proporcionar por error a los usuarios móviles la caché de la página HTML para ordenadores o viceversa.
  • Ayuda al robot de Google a detectar más rápido el contenido optimizado para móviles, ya que una cabecera HTTP Vary válida es una de las señales que podemos utilizar para rastrear las URL que proporcionan contenido optimizado para móviles.

La cabecera HTTP Vary se incluye en la respuesta de los servidores a una solicitud de la forma siguiente:

HTTP/1.1 200 OK
Content-Type: text/html
Vary: User-Agent
Content-Length: 5710
(... rest of HTTP response headers...)

La cabecera HTTP Vary informa a los navegadores de que el contenido de la respuesta varía en función del user-agent que solicite la página. Si tu servidor ya la utiliza, puedes añadir User-Agent a la lista que ya se ha proporcionado.

Detectar correctamente el user-agent

La detección de user-agent (a veces denominada "sniffing") suele ser una técnica propensa a errores. Hay muchas causas, pero hay tres tipos de errores habituales:

  1. La detección de user-agent depende de una lista de cadenas o subcadenas de user-agent para determinar las coincidencias. Estas listas deben mantenerse y actualizarse constantemente, y no coincidirán con los nuevos user-agent. La realidad es que muchas de esas listas no se mantienen adecuadamente ni se actualizan, lo que empeora la experiencia de usuario.
  2. Al buscar coincidencias de user-agent, es habitual obtener coincidencias erróneas; a veces se detecta un user-agent de ordenador como uno de móvil o viceversa. También suele pasar que los sitios web consideren los tablets como smartphones. Al detectar los user-agent de los navegadores con los que se accede a tu sitio web, procura que se busquen coincidencias con cadenas específicas de smartphones (por ejemplo, buscando aquellas que contengan las palabras "Android" y "Mobile") en lugar de con cadenas genéricas de dispositivos móviles (como únicamente "Android"). Obtén más información en esta entrada de blog.

  3. Ten mucho cuidado con el encubrimiento al detectar user-agent. Durante este proceso, tu sitio web detecta qué clase o tipo de dispositivo lo está visitando buscando el nombre del dispositivo en la cadena de user-agent, pero no debería buscar específicamente el robot de Google. Todos los user-agent del robot de Google se identifican como dispositivos móviles concretos, por lo que deberías tratarlos exactamente del mismo modo que tratarías a esos dispositivos.

    Puedes renderizar previamente el contenido que vaya a mostrarse a rastreadores, como el robot de Google. Esta práctica no se considera encubrimiento si se configura correctamente.