Doce direcciones para un solo artículo
Cada entrada de este blog vive en doce direcciones. Once llevan un prefijo de idioma — /en/blog/…, /de/blog/… y nueve más — y la duodécima no lleva ninguno. Esa lee la cabecera Accept-Language del navegador y responde en aquel de los once idiomas que reconoce en ella.
El 27 y el 28 de agosto los rastreadores se llevaron 1.609 páginas del blog de este sitio. Los lectores se llevaron 628.
Lo que las páginas ya se dicen entre sí
Las doce dicen lo mismo en su cabecera, tres cosas, y hoy he medido las tres en vez de fiarme del código.
El canonical de cada página apunta a sí misma. Once líneas hreflang nombran a las hermanas, y una duodécima nombra la dirección sin prefijo como x-default, porque esa no pertenece a ningún idioma concreto. Esa dirección responde con Vary: Accept-Language, Accept-Encoding, para que cualquier caché delante sepa que el cuerpo depende de una cabecera de la petición.
La negociación funciona. La misma dirección con Accept-Language: de devuelve una página marcada lang="de", con ja una japonesa, y con un código que no usa nadie, inglés. Doce peticiones alternando entre cuatro idiomas devolvieron tres veces seguidas cuatro cuerpos correctos, así que la caché de páginas indexa por idioma y no solo por ruta.
Esto es lo que pide la especificación: un grupo completo y recíproco en el que cada miembro se nombra a sí mismo y a todas sus hermanas. Es la disposición que permite a un buscador tratar doce direcciones como un artículo en doce idiomas en vez de como doce artículos compitiendo entre ellos.
No hace que nadie se lleve menos
Tampoco reduce las descargas, y el registro de accesos deja poco margen a la interpretación.
ClaudeBot hizo 396 peticiones al blog sobre 36 entradas — exactamente 11,0 versiones de idioma por entrada, todos los idiomas, todas las veces. bingbot salió a 8,7 sobre 37 entradas, PetalBot a 6,0, Applebot a 4,3. SemrushBot llegó a 1,8. Googlebot hizo 72 peticiones sobre 42 entradas, una media de 1,5 versiones por entrada, y es el único de los seis que se comporta como si la anotación le hubiera llegado.
Entre todos los rastreadores tocaron 73 de las 76 entradas al menos una vez, y 68 de ellas en más de un idioma. La media fue de 7,84 versiones de idioma por entrada de once posibles.
Nada de esto es una infracción. hreflang es una pista sobre cómo se relacionan las páginas, dirigida a la parte de un buscador que decide qué resultado mostrar. No es una instrucción para la parte que decide qué descargar. Un rastreador que nunca ha visto /uk/blog/… no tiene forma de saber que es una traducción hasta que la pide y lee la cabecera — la anotación solo puede actuar después de la petición que habría podido ahorrar.
Lo que cuesta
Menos de lo que sugiere el apartado anterior. Esas 1.689 peticiones de rastreadores a páginas del blog son el 0,5 por ciento de las 373.019 peticiones que este vhost atendió en dos días, y 19,9 MB de los 4.363 MB que envió. Una página del blog vuelve en aproximadamente una décima de segundo, así que todo el rastreo undécuplo cuesta unos ochenta segundos de procesador al día.
El sitemap cuesta algo más de lo que esperaba. Lista 3.136 direcciones con 13.248 anotaciones de idioma colgando de ellas: 1,85 MB de XML, 35 KB una vez comprimido. Se reconstruye como mucho cada seis horas, y por eso una entrada publicada a la una y diez aparece completa en él unas horas después y no de inmediato.
Ninguna de esas cifras merece un cambio. La única palanca que reduciría el rastreo sería no tener las direcciones, y las direcciones son la razón de ser.
Lectores y rastreadores quieren cosas distintas
Los mismos dos días, repartidos por idioma, muestran dos costumbres bastante distintas.
Los rastreadores se reparten casi por igual: entre el 5,5 y el 10,5 por ciento de sus peticiones al blog fue a cada una de las once versiones con prefijo, más un 16 por ciento a la que no lo lleva. Se parece a alguien recorriendo una lista.
Los lectores no se reparten por igual. El 38 por ciento de sus peticiones fue a la dirección sin prefijo y otro 18 por ciento a /en/, así que más de la mitad llegó en inglés o por negociación. El resto se divide entre diez idiomas, el mayor el alemán con un 7 por ciento, el menor el francés con un 2.
Ese 44 por ciento restante es toda la razón por la que existen las rutas de idioma. También es lo bastante pequeño como para que fuera fácil convencerse de quitarlas — que es el mismo error que leer la columna de rastreadores y concluir que las páginas son populares.
Lo que se generaliza
Una pista correcta no es una instrucción. Todo lo que hay en la cabecera de estas páginas es correcto, recíproco y comprobable, y cinco de cada seis rastreadores piden como si nada de eso estuviera ahí. La especificación describe lo que significa la anotación, no lo que hará con ella un programa concreto.
Así que la pregunta útil nunca fue si el marcado es correcto. Era cuántas veces viene de verdad cada uno de los que descargan, y eso solo lo puede contestar el registro — y una vez contestado, la conclusión honesta es que el rastreo undécuplo cuesta medio por ciento y hay que dejarlo en paz.