Publicación dinámica

La publicación dinámica es una configuración en la que se envía una respuesta desde el servidor con varios códigos HTML (y CSS) en la misma URL según el agente de usuario usado en la solicitud de la página.

Dado que no es del todo evidente que con esta configuración se modifique el código HTML en el sitio web según los agentes de usuario para móviles (el contenido para móviles se encuentra "oculto" al rastrearlo con un agente de usuario para ordenadores), se recomienda que se envíe desde el servidor una pista para solicitar que el robot de Google para smartphones también rastree la página y así 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 indica a los servidores de caché usados en ISP y en otros lugares que se debe tener en cuenta el agente de usuario para decidir si se proporciona la página desde la caché o no. Sin la cabecera HTTP Vary, se podría proporcionar por error a los usuarios de móviles la caché de la página HTML para ordenadores o viceversa.
  • El robot de Google puede 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 con las que se proporciona contenido optimizado para móviles.

La cabecera HTTP Vary forma parte de la respuesta del servidor a una solicitud, de la forma siguiente:

GET /page-1 HTTP/1.1
Host: www.example.com
(...rest of HTTP request headers...)

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

La cabecera Vary informa al navegador de que el contenido de la respuesta variará en función del agente de usuario que solicite la página. Si el servidor ya utiliza la cabecera HTTP Vary, puedes añadir "User-Agent" a la lista que ya se ha proporcionado.

Detección correcta de agentes de usuario

La detección de agentes de usuario (a veces llamada "husmeo" de agentes de usuario) suele ser una técnica propensa a errores. Hay muchas causas, pero hay tres tipos de errores habituales:

  1. La detección de agentes de usuario depende de si se cuenta con una lista de cadenas de agentes de usuario (o subcadenas) para determinar las coincidencias. Dichas listas necesitan un mantenimiento y una actualización constantes, y no coincidirán con los agentes de usuario nuevos. En realidad, muchas de esas listas no se mantienen adecuadamente y están desfasadas, lo que empeora la experiencia de usuario.
  2. Al buscar coincidencias de agentes de usuario, es habitual obtener coincidencias erróneas, a veces se detecta un agente de usuario de ordenador como uno de móvil o viceversa. Del mismo modo, un error habitual en los sitios web es considerar los dispositivos tablet como smartphones. Para detectar los agentes de usuario de los navegadores con los que se accede a tu sitio web, procura que la detección se realice mediante la búsqueda de cadenas específicas para smartphone (buscando aquellas que contengan las palabras "Android" y "Mobile") en lugar de cadenas genéricas para móviles (si se busca únicamente "Android"). Obtén más información en esta entrada de blog.

  3. Ten mucho cuidado con el encubrimiento al detectar agentes de usuario, ya que, durante ese proceso, el sitio detecta la clase o el tipo de dispositivo buscando el nombre de este en la cadena de agente de usuario; no debería buscar específicamente el robot de Google. Todos los agentes de usuario del robot de Google se identifican a sí mismos como dispositivos móviles específicos, y deberías tratarlos exactamente del mismo modo que tratarías a esos dispositivos. Por ejemplo, el robot de Google para smartphones se identifica a sí mismo como un iPhone, y deberías ofrecerle la misma respuesta que recibiría un usuario de iPhone (redireccionamiento, contenido optimizado, etc.).

Enviar comentarios sobre...