Hoe wij kliks tellen zonder de privacy aan te tasten
Een teller beantwoordt "hoeveel kwamen er". De nuttiger vraag is meestal "hoeveel deden er iets" — klikten op de contactlink, openden de download, gingen naar een sociaal profiel. Deze site heeft daar gebeurtenissen voor sinds ze gebouwd zijn: zet data-s4u-event="contact" op een element en kliks erop worden op naam geteld.
Bijna niemand gebruikte het, want bijna niemand wist ervan. Daarom is er nu een vinkje: tel kliks op links automatisch, zonder dat er kenmerken nodig zijn. Het interessante is niet de schakelaar. Het is hoe het getelde ding heet.
Niet de linktekst
De voor de hand liggende naam voor een klik zijn de woorden waarop de bezoeker klikte. Dat is ook de verkeerde.
Linktekst is vrije inhoud. Een link kan luiden "Bestelling 4711", of "Bericht van Anna", of een huisnummer, een boekingsnummer of een e-mailadres bevatten. Dat zou allemaal in een databasekolom met de naam name belanden en daar blijven staan. De privacyverklaring van deze dienst zegt dat de statistieken geen persoonsgegevens bevatten, en dat moet waar blijven zonder af te hangen van wat een sitebeheerder toevallig in een ankertag schrijft.
Er is een tweede probleem, kleiner maar echt: twintig links met de tekst "hier" op één pagina zijn één naam die niets zegt, en dezelfde link in elf vertalingen zou elf namen zijn van de vijftig die een teller mag hebben.
De naam komt dus van het doelpad. De sitebeheerder heeft het gekozen, het ligt vast, en het is al de sleutel die de paginastatistieken gebruiken.
Drie normalisaties, elk met een reden
- Taalvoorvoegsel weggehaald.
/de/blogen/pl/blogzijn dezelfde pagina. Zonder dit zou alleen al de taalwisselaar van één meertalige site elf van de vijftig namen opslokken. - Reeksen van vijf of meer cijfers worden
n. Twee statistiekpagina's met verschillende tellernummers zijn geen twee pagina's; het is dezelfde pagina twee keer. - Links die de site verlaten worden
ex-plus de host. Het pad van andermans pagina zegt de beheerder niets. Waar de klik heen ging wel.
Ankers, mailto:, tel: en javascript: worden overgeslagen — het zijn geen bestemmingen waarvoor iemand een aantal nodig heeft. Elementen die al een eigen gebeurtenisnaam dragen, worden ook overgeslagen, anders zou dezelfde klik dubbel geteld worden.
Wat het kost
Het browserscript werd 1.022 bytes groter, gecomprimeerd, één keer bij het eerste bezoek. Verder niets: de markering rijdt mee in een aanvraag die het script bij elke paginaweergave toch al doet — een aanvraag die tot nu toe altijd dezelfde constante teruggaf — dus er is geen tweede heen-en-weer. Op de server staat de lijst met tellers waarbij de schakelaar aanstaat in een klein bestand in plaats van in een bevraging, want die bevraging is een volledige doorloop van 166.433 regels en kost gemeten 143,9 milliseconden.
De standaard staat uit, en dat blijft zo. Bij het volume van deze site zou het overal aanzetten ruwweg negenduizend schrijfacties per dag toevoegen aan de drukste tabel die er is. Dat is iets wat een beheerder bewust aanzet, geen iets dat een site vanzelf overkomt.