Dwanaście adresów na jeden wpis
Każdy wpis na tym blogu leży pod dwunastoma adresami. Jedenaście ma przedrostek językowy — /en/blog/…, /de/blog/… i dziewięć innych — a dwunasty nie ma żadnego. Ten czyta nagłówek Accept-Language przeglądarki i odpowiada w tym z jedenastu języków, który w nim rozpozna.
27 i 28 sierpnia roboty pobrały z tej witryny 1 609 stron bloga. Czytelnicy pobrali 628.
Co strony już sobie mówią
Wszystkie dwanaście mówią w nagłówku to samo, trzy rzeczy, i wszystkie trzy dziś zmierzyłem, zamiast wierzyć kodowi.
Canonical każdej strony wskazuje na nią samą. Jedenaście wierszy hreflang wymienia rodzeństwo, a dwunasty wskazuje adres bez przedrostka jako x-default, bo ten nie należy do żadnego jednego języka. Ten adres odpowiada nagłówkiem Vary: Accept-Language, Accept-Encoding, żeby każdy bufor przed nim wiedział, że treść zależy od nagłówka żądania.
Negocjacja działa. Ten sam adres z Accept-Language: de zwraca stronę oznaczoną lang="de", z ja japońską, a z kodem, którego nikt nie używa — angielską. Dwanaście żądań na przemian w czterech językach dało trzy razy z rzędu cztery poprawne treści, więc bufor stron kluczuje po języku, a nie tylko po ścieżce.
Dokładnie tego wymaga specyfikacja: pełnej, wzajemnej grupy, w której każdy członek wymienia siebie i całe rodzeństwo. To układ, dzięki któremu wyszukiwarka traktuje dwanaście adresów jako jeden wpis w dwunastu językach, a nie jako dwanaście wpisów konkurujących ze sobą.
Nikt przez to nie pobiera mniej
Mniej się bowiem nie pobiera, a dziennik dostępu zostawia tu niewiele miejsca na interpretację.
ClaudeBot wykonał 396 żądań do bloga wobec 36 wpisów — dokładnie 11,0 wersji językowych na wpis, każdy język, za każdym razem. bingbot wyszedł na 8,7 wobec 37 wpisów, PetalBot na 6,0, Applebot na 4,3. SemrushBot zdołał 1,8. Googlebot wykonał 72 żądania wobec 42 wpisów, średnio 1,5 wersji językowej na wpis, i jest jedynym z szóstki, który zachowuje się tak, jakby adnotacja do niego dotarła.
Łącznie roboty dotknęły 73 z 76 wpisów co najmniej raz, a 68 z nich w więcej niż jednym języku. Średnia wyniosła 7,84 wersji językowej na wpis z jedenastu możliwych.
Nic z tego nie jest naruszeniem. hreflang to wskazówka o tym, jak strony się ze sobą wiążą, skierowana do tej części wyszukiwarki, która decyduje, który wynik pokazać. To nie jest polecenie dla tej części, która decyduje, co pobrać. Robot, który nigdy nie widział /uk/blog/…, nie ma jak wiedzieć, że to tłumaczenie, zanim tego nie pobierze i nie przeczyta nagłówka — adnotacja może zadziałać dopiero po pobraniu, które mogłaby oszczędzić.
Ile to kosztuje
Mniej, niż sugeruje akapit wyżej. Te 1 689 żądań robotów do stron bloga to 0,5 procent z 373 019 żądań, na które ten vhost odpowiedział przez dwa dni, i 19,9 MB z 4 363 MB, które wysłał. Strona bloga wraca w mniej więcej jedną dziesiątą sekundy, więc całe jedenastokrotne pobieranie kosztuje jakieś osiemdziesiąt sekund czasu procesora dziennie.
Mapa witryny kosztuje trochę więcej, niż się spodziewałem. Wymienia 3 136 adresów z 13 248 doczepionymi do nich odsyłaczami językowymi: 1,85 MB XML-a, 35 KB po kompresji. Przebudowuje się najwyżej co sześć godzin, dlatego wpis opublikowany o dziesięć po pierwszej trafia do niej w komplecie dopiero kilka godzin później, a nie od razu.
Żadna z tych liczb nie jest warta zmiany. Jedyna dźwignia, która zmniejszyłaby pobieranie, to nie mieć tych adresów, a te adresy są całym sensem.
Czytelnicy i roboty chcą czego innego
Te same dwa dni, w podziale na języki, pokazują dwa całkiem różne nawyki.
Roboty rozkładają się niemal równo: od 5,5 do 10,5 procent ich żądań do bloga trafiło do każdej z jedenastu wersji z przedrostkiem, plus 16 procent do tej bez. Wygląda to jak przerabianie listy.
Czytelnicy nie rozkładają się równo. 38 procent ich żądań poszło na adres bez przedrostka, a kolejne 18 procent na /en/, więc ponad połowa przyszła po angielsku albo przez negocjację. Reszta dzieli się na dziesięć języków, największy niemiecki z 7 procentami, najmniejszy francuski z 2.
Te pozostałe 44 procent to cały powód, dla którego istnieją ścieżki językowe. Są też na tyle małe, że łatwo dałoby się z nich wyperswadować — a to ten sam błąd co wyczytanie z kolumny robotów, że strony są popularne.
Co się uogólnia
Poprawna wskazówka to nie polecenie. Wszystko w nagłówku tych stron jest poprawne, wzajemne i sprawdzalne, a pięć robotów na sześć pobiera tak, jakby nic z tego tam nie stało. Specyfikacja opisuje, co adnotacja znaczy, a nie co zrobi z nią jakikolwiek konkretny program.
Pożyteczne pytanie nigdy więc nie brzmiało, czy znaczniki są poprawne. Brzmiało: ile razy każdy pobierający naprawdę przychodzi — a na to odpowiedzieć może tylko dziennik. Kiedy już odpowiedział, uczciwy wniosek jest taki, że jedenastokrotne pobieranie kosztuje pół procenta i należy je zostawić w spokoju.