Dvanáct adres pro jeden článek
Každý článek na tomto blogu žije na dvanácti adresách. Jedenáct nese jazykovou předponu — /en/blog/…, /de/blog/… a devět dalších — a dvanáctá nemá předponu vůbec žádnou. Ta čte hlavičku Accept-Language prohlížeče a odpoví v tom z jedenácti jazyků, který rozpozná.
Za 27. a 28. srpna si crawlery stáhly z tohoto webu 1 609 stránek blogu. Čtenáři 628.
Co si stránky už navzájem sdělují
Všech dvanáct uvádí ve své sekci head stejné tři věci a dnes jsem všechny tři ověřil, místo abych věřil kódu.
Kanonický odkaz na každé stránce ukazuje sám na sebe. Jedenáct řádků hreflang uvádí sesterské jazykové verze a dvanáctý uvádí adresu bez předpony jako x-default, protože ta adresa nepatří žádnému jednotlivému jazyku. Adresa bez předpony odpovídá s hlavičkou Vary: Accept-Language, Accept-Encoding, takže cokoli, co před ní ukládá do mezipaměti, ví, že obsah závisí na hlavičce požadavku.
Vyjednávání funguje. Požadavek na tutéž URL s Accept-Language: de vrátí stránku označenou lang="de", s ja japonskou, s kódem, který nikdo nepoužívá, anglickou. Dvanáct požadavků střídajících čtyři jazyky vrátilo třikrát po sobě čtyři správné obsahy, takže mezipaměť stránek má v klíči jazyk, a ne jen cestu.
Přesně to specifikace požaduje: úplnou, vzájemnou skupinu, v níž každý člen uvádí sám sebe i všechny sourozence. Právě toto uspořádání umožňuje vyhledávači brát dvanáct adres jako jeden článek ve dvanácti jazycích, a ne jako dvanáct článků, které si navzájem konkurují.
Nikoho to nepřiměje stahovat méně
Stahování to ale nesnižuje a přístupový log to říká bez velkého prostoru pro výklad.
ClaudeBot poslal 396 požadavků na blog napříč 36 články — přesně 11,0 jazykové verze na každý, každý jazyk, pokaždé. bingbot měl průměr 8,7 napříč 37 články, PetalBot 6,0, Applebot 4,3. SemrushBot zvládl 1,8. Googlebot poslal 72 požadavků napříč 42 články, v průměru 1,5 jazykové verze na článek, a jako jediný z šesti se chová, jako by k němu anotace dorazila.
Za všechny crawlery dohromady bylo 73 ze 76 článků staženo aspoň jednou a 68 z nich ve více než jednom jazyce. Průměr činil 7,84 jazykové verze na článek z jedenácti.
Nic z toho není porušení pravidel. hreflang je nápověda o tom, jak spolu stránky souvisejí, určená té části vyhledávače, která rozhoduje, jaký výsledek zobrazit. Není to pokyn pro tu část, která rozhoduje, co stáhnout. Crawler nemá u dosud neviděné stránky /uk/blog/… jak poznat, že jde o překlad, dokud ji nestáhne a nepřečte její head — anotace může zapůsobit až po požadavku, který mohla ušetřit.
Kolik to stojí
Méně, než by naznačoval předchozí odstavec. Když se k 1 609 stránkám článků přičtou přehledové stránky blogu a stránky štítků, poslaly crawlery pod /blog 1 689 požadavků: 0,5 % z 373 019 požadavků, na které tento virtuální host za dva dny odpověděl, a 19,9 MB z 4 363 MB, které odeslal. Stránka blogu se vrátí zhruba za desetinu sekundy, takže celé jedenáctinásobné procházení stojí denně kolem osmdesáti sekund procesorového času.
Mapa webu stojí o něco víc, než jsem čekal. Uvádí 3 136 adres a k nim 13 248 anotací alternativních jazyků: 1,85 MB XML, po kompresi 35 KB. Přestavuje se nejvýš jednou za šest hodin, a proto se článek zveřejněný deset minut po jedné odpoledne objeví v ní kompletní až o několik hodin později, ne hned.
Nic v těchto číslech nestojí za změnu. Jediná páka, která by stahování snížila, je nemít ty adresy, a právě o ty adresy jde.
Čtenáři a crawlery chtějí něco jiného
Tytéž dva dny rozdělené podle jazyka ukazují dva dost odlišné zvyky.
Crawlery se rozkládají téměř rovnoměrně: na každou z jedenácti verzí s předponou šlo 5,5 až 10,5 % jejich požadavků na blog, k tomu 16 % na verzi bez předpony. Tak vypadá něco, co prochází seznam.
Čtenáři se rovnoměrně nerozkládají. 38 % jejich požadavků šlo na adresu bez předpony a dalších 18 % na /en/, takže víc než polovina přišla buď v angličtině, nebo přes vyjednávání. Zbytek se dělí mezi deset jazyků, největší je němčina se 7 %, nejmenší francouzština se 2 %.
Těch zbývajících 44 % je jediný důvod, proč jazykové cesty existují. Je to zároveň tak málo, že by se jazykové cesty daly snadno odargumentovat — což je stejná chyba jako přečíst sloupec crawlerů a usoudit, že stránky jsou oblíbené.
Co z toho plyne obecně
Správná nápověda není pokyn. Všechno v sekci head těchto stránek je správné, vzájemné a ověřitelné, a pět ze šesti crawlerů stahuje, jako by tam nic z toho nebylo. Specifikace popisuje, co anotace znamená, ne co s ní udělá konkrétní program, když ji uvidí.
Užitečnou otázkou tedy nikdy nebylo, zda je značkování správné. Byla jí otázka, kolikrát každý stahovač skutečně přijde, a na tu umí odpovědět jen log — a když je zodpovězena, poctivý závěr zní, že jedenáctinásobné procházení stojí půl procenta a má se nechat být.