Douăsprezece adrese URL pentru un singur articol
Fiecare articol de pe acest blog se află la douăsprezece adrese. Unsprezece poartă un prefix de limbă — /en/blog/…, /de/blog/… și încă nouă — iar a douăsprezecea nu are niciun prefix. Aceasta citește antetul Accept-Language al browserului și răspunde în oricare dintre cele unsprezece limbi pe care o recunoaște.
Pe 27 și 28 august, crawlerii au descărcat 1.609 pagini de blog de pe acest site. Cititorii au descărcat 628.
Ce își spun deja paginile unele altora
Toate douăsprezece spun aceleași trei lucruri în secțiunea head, iar eu le-am verificat pe toate trei astăzi, în loc să am încredere în cod.
Linkul canonical de pe fiecare pagină trimite la ea însăși. Unsprezece rânduri hreflang numesc versiunile lingvistice înrudite, iar al douăsprezecelea numește adresa fără prefix drept x-default, pentru că acea adresă nu aparține niciunei limbi anume. Adresa fără prefix răspunde cu Vary: Accept-Language, Accept-Encoding, așa că orice cache din fața ei știe că corpul depinde de un antet al cererii.
Negocierea funcționează. Cererea aceleiași adrese URL cu Accept-Language: de returnează o pagină marcată lang="de", cu ja una japoneză, cu un cod pe care nu-l folosește nimeni, una engleză. Douăsprezece cereri alternând între patru limbi au returnat patru corpuri corecte de trei ori la rând, deci cache-ul paginilor are drept cheie limba, nu doar calea.
Exact asta cere specificația: un grup complet, reciproc, în care fiecare membru se numește pe sine și pe toți frații săi. Este aranjamentul care permite unui motor de căutare să trateze douăsprezece adrese ca un singur articol în douăsprezece limbi, în loc de douăsprezece articole care concurează între ele.
Nu îl face pe nimeni să descarce mai puțin
De asemenea, nu reduce descărcările, iar jurnalul de acces o spune fără prea mult loc de interpretare.
ClaudeBot a făcut 396 de cereri de blog pentru 36 de articole — exact 11,0 versiuni lingvistice fiecare, toate limbile, de fiecare dată. bingbot a avut o medie de 8,7 pentru 37 de articole, PetalBot 6,0, Applebot 4,3. SemrushBot a ajuns la 1,8. Googlebot a făcut 72 de cereri pentru 42 de articole, în medie 1,5 versiuni lingvistice per articol, și este singurul dintre cei șase care se poartă ca și cum adnotarea ar fi ajuns la el.
La toți crawlerii la un loc, 73 dintre cele 76 de articole au fost atinse cel puțin o dată, iar 68 dintre acestea în mai mult de o limbă. Media a fost de 7,84 versiuni lingvistice per articol, din unsprezece.
Nimic din toate acestea nu este o încălcare. hreflang este un indiciu despre legătura dintre pagini, adresat părții unui motor de căutare care decide ce rezultat să afișeze. Nu este o instrucțiune pentru partea care decide ce să descarce. Un crawler care nu a văzut niciodată /uk/blog/… nu are cum să știe că este o traducere până nu o descarcă și îi citește secțiunea head — adnotarea poate avea efect doar după cererea pe care ar fi putut-o economisi.
Ce costă
Mai puțin decât sugerează paragraful de mai sus. Cele 1.689 de cereri ale crawlerilor către pagini de blog reprezintă 0,5 la sută din cele 373.019 cereri la care a răspuns această gazdă virtuală în două zile și 19,9 MB din cei 4.363 MB trimiși. O pagină de blog se întoarce în circa o zecime de secundă, așa că întreaga descărcare înmulțită de unsprezece ori costă undeva în jur de optzeci de secunde de procesor pe zi.
Sitemap-ul costă ceva mai mult decât mă așteptam. Enumeră 3.136 de adrese cu 13.248 de adnotări de limbă alternativă atașate: 1,85 MB de XML, 35 KB după comprimare. Este reconstruit cel mult o dată la șase ore, motiv pentru care un articol publicat la ora unu și zece după-amiaza apare complet în el abia câteva ore mai târziu, nu imediat.
Nimic din aceste cifre nu merită schimbat. Singura pârghie care ar reduce descărcările ar fi să nu existe adresele, iar adresele sunt tocmai rostul.
Cititorii și crawlerii vor lucruri diferite
Aceleași două zile, împărțite pe limbi, arată două obiceiuri destul de diferite.
Crawlerii se împart aproape uniform: între 5,5 și 10,5 la sută din cererile lor de blog au mers la fiecare dintre cele unsprezece versiuni cu prefix, plus 16 la sută la cea fără prefix. Aceasta este forma a ceva care parcurge o listă.
Cititorii nu se împart uniform. 38 la sută din cererile lor au mers la adresa fără prefix și încă 18 la sută la /en/, deci mai mult de jumătate au sosit fie în engleză, fie prin negociere. Restul se împarte între zece limbi, cea mai mare fiind germana cu 7 la sută, cea mai mică franceza cu 2 la sută.
Acele 44 la sută rămase sunt întregul motiv pentru care există căile de limbă. Sunt totodată destul de puține încât căile de limbă ar fi ușor de declarat inutile — ceea ce este aceeași greșeală ca citirea coloanei crawlerilor și concluzia că paginile sunt populare.
Ce se poate generaliza
Un indiciu corect nu este o instrucțiune. Tot ce se află în secțiunea head a acestor pagini este corect, reciproc și verificabil, iar cinci din șase crawleri descarcă de parcă nimic din toate acestea nu ar exista. Specificația descrie ce înseamnă adnotarea, nu ce va face un anumit program când o vede.
Așadar, întrebarea utilă nu a fost niciodată dacă marcajul este corect. A fost de câte ori vine de fapt fiecare program de descărcare, o întrebare la care doar jurnalul poate răspunde — iar după ce i s-a răspuns, concluzia onestă este că descărcarea înmulțită de unsprezece ori costă o jumătate de procent și trebuie lăsată în pace.