Míra okamžitého opuštění potřebuje jeden bit, ne sledovač
Do 28. srpna tento web míru okamžitého opuštění neukazoval a stránka o nás uváděla, že záměrně: vyžadovala by sledovat relaci přes několik zobrazení stránek, a to by vyžadovalo lištu se souhlasem.
První polovina byla pravda. Druhá přestala platit ve chvíli, kdy jsme začali zaznamenávat výstupní stránky, a nikdo tu větu neopravil.
Proč to nešlo jednoduše spočítat
Existuje tabulka přechodů ze stránky na stránku. Vypadá jako všechno, co míra okamžitého opuštění potřebuje: návštěva, která přejde z jedné stránky na druhou, není okamžité opuštění, takže stačí spočítat návštěvy bez přechodů.
To nefunguje a důvod je ve třech řádcích zaznamenávacího kódu. Přechod se zahodí, když jsou obě stránky stejné, když mezi nimi uplynulo víc než třicet minut, a po třech stech nových dvojicích u jednoho počítadla za den. Každé pravidlo je správné pro to, k čemu tabulka slouží — ukázat, která stránka vede ke které — a každé dělá skutečnou druhou stránku neviditelnou.
Návštěva přitom pro účely počítání trvá hodinu: tak dlouho přežívá řádek v živé tabulce. Čitatel by tedy používal jednu definici návštěvy a jmenovatel jinou. Číslo by nebylo trochu špatně, nemělo by žádné ukotvení.
Co data opravdu řekla
Za 27. a 28. srpna bylo 8 669 návštěv a 2 817 přechodů, tedy v průměru 1,32 stránky na návštěvu. Přechod vůbec zaznamenalo 99 z 572 počítadel.
To není vypnutý přepínač — zaznamenávání cest je ve výchozím stavu zapnuté a mají ho zapnuté všech 166 453 počítadel. Ty weby jsou opravdu jednostránkové: profilové stránky, weby o jedné stránce, galerie obrázků na cizí platformě. Míra okamžitého opuštění bude u většiny z nich blízko sta procent, a bude to správně.
Jeden bit a žádný nový sběr dat
Návštěva už má na hodinu svůj řádek. Teď nese jednu věc navíc: zda tato návštěva někdy viděla druhou, odlišnou stránku. Hodnota se nastaví uvnitř příkazu, který běží tak jako tak, bez dalšího dotazu:
ON DUPLICATE KEY UPDATE mehr = mehr | (url <> VALUES(url)),
last_seen = UNIX_TIMESTAMP(), url = VALUES(url)
Celý trik je v pořadí těch přiřazení. Databáze je vyhodnocuje zleva doprava, takže url při porovnání ještě drží předchozí adresu. Dejte url na začátek a řádek porovná novou adresu sama se sebou, bit zůstane navždy nulový a míra okamžitého opuštění ukáže sto procent u všech. To je selhání, které vypadá přesně jako věrohodný výsledek, a proto stálo za to ho ověřit na pokusném řádku, než se mu začalo věřit.
Když hodina uplyne, noční úklid spočítá končící řádky — kolik návštěv a kolik z nich vícestránkových — zapíše jeden řádek za počítadlo a den a řádky smaže. Bit žije hodinu. Žádný soubor cookie a nic, co by ho přežilo.
Co z toho plyne obecně
Zajímavou otázkou nikdy nebylo, jak sledovat relaci. Byla jí otázka, která z věcí, jež už zapisujeme, na ni náhodou odpovídá, a zda je odpověď ukotvená ve stejné definici jako otázka.
Dva zdroje, které oba vypadají, že měří návštěvy, jeden s třicetiminutovým pravidlem a druhý se šedesátiminutovým, dají poměr, který je číslem a nic neznamená. Je snazší přidat jeden bit k řádku, který už existuje, než později vysvětlovat, proč má míra hodnotu, jakou má.