Kontakta supporten

Vi svarar via e-post, oftast inom två dagar.

Google reCAPTCHA kontrollerar det här inskicket mot missbruk; data skickas till Google. Skriptet laddas först när formuläret öppnas.

← Alla inlägg

Listan över vem som är online – utlovad 2012, nu på plats

Den 25 augusti 2012 berättade ett inlägg på den här bloggen att statistikfälten hade börjat uppdatera sig själva, och det avslutades med en mening: ”Den planerade funktionen, listan ’Vem är online’, kommer snart!”

Det inlägget finns kvar. Listan som det utlovade tog fjorton år på sig att komma. Nu finns den, och räknaren som inlägget länkade till har varit igång hela tiden.

Vad den visar

Statistiksidan har en livepanel: hur många som är på webbplatsen just nu, och de senaste av dem i en lista – landet de anslöt från, staden där den är känd, vilken sida de är på och hur länge sedan de senast sågs. Tolv åt gången, nyaste först.

”Just nu” betyder de senaste fem minuterna. Efter en timme raderas raderna helt.

0560i livelistanraden sparasraderadminuter sedan senast sedd

Vad ”vem” inte betyder

Ingen i den listan identifieras. Den bygger på samma dagliga hash på 16 byte som beskrivs i inlägget om att räkna utan cookie – det finns inget namn, inget konto, ingen cookie och ingen sparad IP-adress bakom någon av raderna.

Den sparar också bara sidans sökväg i stället för hela adressen: /shop/boots, inte hela länken med allt som en sökmotor eller ett nyhetsbrev har lagt till i slutet av den.

Och två personer från samma stad som tittar på samma sida blir helt enkelt två rader. Ingenting i systemet kan skilja två läsare från en läsare med en mobil och en bärbar dator. Det är inget förbiseende som väntar på att städas upp i en senare version. Det är själva designen, och det är samma avvägning som räknaren gör överallt annars: tillräckligt för att vara användbar, inte tillräckligt för att följa efter någon.

Live utan att hålla en anslutning öppen

Det moderna sättet att bygga detta är en WebSocket eller server-sent events – webbläsaren håller en anslutning öppen och servern skickar uppdateringar genom den när de sker. Det är den eleganta lösningen, och här hade den varit fel.

Den här webbplatsens webbserver använder en process per öppen anslutning, och dess egentliga jobb är att besvara räknarförfrågningar från ett par tusen webbplatser. En anslutning som hålls öppen är en process som inte kan svara någon annan. Femtio personer som tittar på sin livesida skulle innebära femtio processer som står sysslolösa och väntar på att leverera ett tal som ändras med några minuters mellanrum.

Så sidan frågar i stället, var femtonde sekund, och hämtar ett litet block JSON. Runt det finns tre beslut som betyder mer än själva intervallet:

  • Om förfrågningar börjar misslyckas backar den till en gång i minuten – i stället för att hamra på en server som uppenbarligen redan har det svårt.
  • I en bakgrundsflik slutar den fråga helt, och uppdaterar i samma ögonblick som fliken kommer fram igen. Ingen tittar på en dold flik, och förfrågan skulle kosta exakt lika mycket som en användbar.
  • Raden uppdaterad för N sekunder sedan räknar uppåt lokalt, en gång i sekunden, och kostar ingenting alls. Det krävs en förfrågan för att ändra data, inte för att låta dem åldras.

Inget av detta är finurligt. Det är proportionerligt, vilket på en liten server är den mer värdefulla egenskapen av de två. En livevy ska inte kosta mer att köra än det den övervakar.

En del som inte kom tillbaka

I september 2015 kom det ett inlägg om att fliken Användare hade lärt sig skilja någon som aktivt läser en sida från någon som hade öppnat den i en bakgrundsflik och glömt bort den.

Den skillnaden är inte tillbaka. Den nuvarande listan vet när en besökare senast sågs; den vet inte om besökaren tittar. Det är verkligen värt att veta – en stor del av varje webbplats ”besökare” är en övergiven flik – så det står på listan över saker att bygga.

Förhoppningsvis dröjer det inte fjorton år till.

Prova själv

Inlägget från 2012 slutade med en länk till ett liveexempel, vilket verkar vara rätt sätt att avsluta det här också. Den ursprungliga länken fungerar förresten fortfarande: räknaren bakom den har varit igång hela tiden och har passerat 1,3 miljoner besök.

Det finns ett liveexempel här, och du behöver inget konto för att titta.

Annons