Una frequenza di rimbalzo richiede un bit, non un tracciatore
Fino al 28 agosto questo sito non mostrava una frequenza di rimbalzo, e la pagina «chi siamo» diceva che era voluto: servirebbe una sessione seguita su più pagine, e quindi un banner di consenso.
La prima metà era vera. La seconda ha smesso di esserlo nel momento in cui abbiamo iniziato a registrare le pagine di uscita, e nessuno ha corretto la frase.
Perché non si poteva semplicemente calcolare
C’è una tabella di transizioni da pagina a pagina. Sembra tutto ciò che una frequenza di rimbalzo richiede: una visita che passa da una pagina a un’altra non è un rimbalzo, quindi basta contare le visite senza transizione.
Non funziona, e il motivo sta in tre righe del codice che registra. Una transizione viene scartata quando le due pagine sono la stessa, quando fra loro sono passati più di trenta minuti, e oltre trecento coppie nuove su un contatore in un giorno. Ogni regola è giusta per ciò a cui la tabella serve — mostrare quale pagina porta a quale — e ognuna rende invisibile una vera seconda pagina.
Intanto una visita, per poterla contare, dura un’ora: tanto vive la riga nella tabella in diretta. Numeratore e denominatore userebbero quindi due nozioni diverse di visita. Il numero non sarebbe stato un po’ sbagliato, sarebbe stato senza ancoraggio.
Che cosa i dati dicevano comunque
Il 27 e il 28 agosto ci sono state 8.669 visite e 2.817 transizioni, cioè 1,32 pagine per visita in media. 99 contatori su 572 hanno registrato una transizione.
Non è un interruttore spento: la registrazione dei percorsi è attiva per impostazione predefinita e tutti i 166.453 contatori ce l’hanno attiva. Quei siti sono davvero di una pagina sola: profili, pagine singole, una galleria sulla piattaforma di qualcun altro. La frequenza di rimbalzo per la maggior parte sarà vicina al cento per cento, e sarà corretta.
Un bit, e nessuna raccolta nuova
Una visita ha comunque una riga per un’ora. Ora porta una cosa in più: se questa visita ha mai visto una seconda pagina, diversa. Il valore si imposta dentro l’istruzione che gira comunque, senza interrogazione aggiuntiva:
ON DUPLICATE KEY UPDATE mehr = mehr | (url <> VALUES(url)),
last_seen = UNIX_TIMESTAMP(), url = VALUES(url)
L’ordine di quelle assegnazioni è tutto il trucco. Il database le valuta da sinistra a destra, quindi url contiene ancora l’indirizzo precedente quando avviene il confronto. Se si mette url davanti, la riga confronta il nuovo indirizzo con sé stesso, il bit resta zero per sempre e la frequenza di rimbalzo segna cento per cento per tutti. È un guasto che assomiglia esattamente a un risultato credibile, ed è per questo che valeva la pena dimostrarlo su una riga usa e getta prima di fidarsi.
Passata l’ora, la pulizia notturna conta le righe che scadono — quante visite, quante di più pagine — scrive una riga per contatore e giorno, e le cancella. Il bit vive un’ora. Nessun cookie, e niente che gli sopravviva.
Che cosa si generalizza
La domanda interessante non è mai stata come seguire una sessione. Era quale delle cose che già annotiamo risponde per caso alla domanda, e se la risposta è ancorata alla stessa definizione della domanda.
Due fonti che sembrano entrambe misurare visite, una con una regola di trenta minuti e l’altra di sessanta, danno un rapporto che è un numero e non significa niente. Costa meno aggiungere un bit a una riga che esiste già che spiegare, dopo, perché il tasso è quello che è.