ugrás a tartalomhoz

Hibás a Google gyorsítótár megjelenítője

Hojtsy Gábor · 2004. Május. 3. (H), 08.48
A Drupal rendszerre történő váltásunk óta jelentek meg szerver hibanaplónkban olyan hibák, melyek érdekes URL-ekkel (pl. hirek/20040319/w3cajanlasok/tagok/regisztracio) rendelkező oldalakat elérő felhasználókra utaltak, illetve hasonló URL-ekkel próbálták meg kliensek letölteni faviconunkat, javascriptünket.

Először hibásan megírt robotokra gondoltam, feltételeztem, hogy egy odalunkat látogató robot nem veszi figyelembe a <base> elemben megadott bázis címet, melyet a linkek feloldására kellene használni, de aztán feltűnt, hogy a hibák nem jelennek meg olyan nagy számban, és különben is egy-egy webcím köré koncentrálódnak. Ezért elő kellett venni a hibanaplót, melyből meglepő következtetést sikerült levonni.

Kiderült, hogy az ilyen jellegű linkekre a Google gyorsítótárból érkeznek a látogatók (a találatokon a "Cached" linkre kattintva). Ezért meg kellett nézni, hogy egy olyan keresésre, melyre Weblabor találatokat is kapok, mégis mit ad a Google Cache. Kiderült, hogy a gyorsítótár megjelenítő nem túl barátságos módon egy teljesen invalid HTML oldalt generál, remélve, hogy a böngészők majd úgyis megjelenítik.

Azzal végülis nem lenne probléma, hogy a cache kimenet gazdagon tűzdelt <font> elemekkel, és az sem, hogy táblázatban vannak a kiírt információk, holott a táblázat csak formázási célokat szolgál. Az már nagyobb probléma, hogy az érintetlenül hagyott eredeti HTML fölé másolja be a Google mindezt, a DOCTYPE elé, a <html> elem elé, azaz oda, ahol nem szabadna semminek lennie. Végülis mondhatjuk, hogy nem olyan égbekiáltó problémáról van szó, a gyorsítótáras oldalakat nem fogják sokáig használni a látogatók, és így is minden szépen megjelenik...

De sajnos van, amit meg kellene tennie a Google megjelenítőnek, és mégsem teszi. Annak érdekében, hogy a gyorsítótár fejléc jól megjelenjen, már az oldal tetejére kimásolja a content-type meta elem tartalmát, és generál egy <base> elemet is, hogy a linkek jó irányba mutassanak (a relatív URL-ek ne a cache szerveren keressék az állományokat). Éppen ez a gond.

Arra sajnos nem gondoltak a fejlesztők, hogy saját bázis beállítása is lehet egy oldalnak és azt nem másolják át (ellentétben a content-type értékkel), hanem generálnak helyette sajátot az oldal címéből. Ezzel viszont relatív linkjeink (gyakorlatilag minden link) működésképtelen, még a hivatkozott CSS-t és Javascriptet is csak azért tudja betölteni a böngésző, mert beépítettem egy intelligens felismerőt az URL feldolgozónkba.

A CSS és JS URL korrektoron kívül nem készítettem helyi megoldást a problémára, hanem inkább felkerestem a Google hibajelentési lehetőségét, és megírtam a problémát. Először is azonnal kaptam egy automatikus üzenetet:

Thank you for writing to Google.

We read all of the email we receive and try to send personal responses to
each message. This note is just to let you know that we've received your
letter, and that you'll hear from us soon.

Thank you for using Google.

Regards,
The Google Team


Ezek után öt nappal később kaptam egy olyan üzenetet, amiből optimista módon azt tudom kiolvasni, hogy a problémát megoldják majd valamikor.

Hi Gabor,

Thank you for your feedback regarding our cached copies. We really
appreciate thoughtful comments from our users, and we'll keep yours in
mind as we work to improve Google.

Regards,
The Google Team


Addig is persze nekünk magunknak kell megoldani a problémát, és ez szerencsére elég egyszerű: egy perjelet kell tenni minden relatív URL elé, hogy a webhely gyökeréhez képest legyen relatív, és ezzel akár el is dobhatjuk a <base> elemet. Valószínű alapos teszteléssel együtt is megoldottam volna a problémát annyi idő alatt, ameddig ezt az elemzést írtam. Ehelyett inkább tervbe tettem a javítást, és egyelőre megtartom a hibát okulásnak. Feltételezem ugyanis, hogy nem webhelyünk lehet az egyetlen szerencsés, ahol base URL-eket használnak, és mint a leírás mutatja, ez gondot okozhat a Google kereső gyorsítótárban, mely végső soron elveszett látogatókat jelenthet.