Support kontaktieren

Wir melden uns per E-Mail. Meist innerhalb von zwei Tagen.

Zum Schutz vor Missbrauch prüft Google reCAPTCHA diese Einsendung. Dabei werden Daten an Google übertragen. Das Skript wird erst beim Öffnen dieses Formulars geladen.

← Alle Beiträge

Die Wer-ist-online-Liste, 2012 angekündigt und jetzt da

Am 25. August 2012 kündigte ein Beitrag in diesem Blog an, dass sich die Statistikfelder von nun an von selbst aktualisierten, und schloss mit dem Satz: „Das geplante Feature, die ‚Wer ist online’-Liste, kommt bald!“

Dieser Beitrag ist immer noch da. Die dort angekündigte Liste brauchte vierzehn Jahre. Es gibt sie jetzt, und der Zähler, auf den jener Beitrag verwies, lief die ganze Zeit weiter.

Was sie zeigt

Die Statistikseite hat ein Live-Panel: wie viele Personen sich gerade in diesem Moment auf der Seite befinden, und die jüngsten davon aufgelistet – das Land, aus dem sie sich verbunden haben, die Stadt, sofern bekannt, welche Seite sie gerade ansehen, und wie lange es her ist, dass sie zuletzt gesehen wurden. Jeweils zwölf auf einmal, die neuesten zuerst.

„In diesem Moment“ bedeutet die letzten fünf Minuten. Nach einer Stunde werden die Zeilen vollständig gelöscht.

0560in der Live-ListeZeile bleibtgelöschtMinuten seit zuletzt gesehen

Was „wer“ nicht bedeutet

Niemand in dieser Liste wird identifiziert. Sie basiert auf demselben täglichen 16-Byte-Hash, der in dem Beitrag über das Zählen ohne Cookie beschrieben ist – hinter keiner Zeile stehen ein Name, ein Konto, ein Cookie oder eine gespeicherte IP-Adresse.

Außerdem wird nur der Pfad der Seite gespeichert, nicht die vollständige Adresse: /shop/boots, nicht der vollständige Link mit allem, was eine Suchmaschine oder ein Newsletter am Ende angehängt haben mag.

Und zwei Personen aus derselben Stadt, die dieselbe Seite ansehen, sind schlicht zwei Zeilen. Nichts im System kann unterscheiden, ob das zwei Leser sind oder ein Leser mit Handy und Laptop. Das ist kein Versehen, das in einer späteren Version noch aufgeräumt werden soll. Es ist so gewollt, und es ist derselbe Kompromiss, den der Zähler überall sonst auch eingeht: genug, um nützlich zu sein, nicht genug, um irgendjemanden zu verfolgen.

Live, ohne eine Verbindung offen zu halten

Der moderne Weg, so etwas zu bauen, ist ein WebSocket oder Server-Sent Events – der Browser hält eine Verbindung offen, und der Server schickt Aktualisierungen hindurch, sobald sie eintreten. Das ist die elegante Antwort, und sie wäre hier die falsche gewesen.

Der Webserver dieser Seite verwendet einen Prozess pro offener Verbindung, und seine eigentliche Aufgabe ist es, Zähleranfragen für ein paar tausend Websites zu beantworten. Eine offen gehaltene Verbindung ist ein Prozess, der niemand anderen mehr bedienen kann. Fünfzig Personen, die ihre Live-Seite betrachten, würden fünfzig Prozesse bedeuten, die untätig warten, um eine Zahl auszuliefern, die sich alle paar Minuten ändert.

Stattdessen fragt die Seite alle fünfzehn Sekunden nach und holt sich einen kleinen Block JSON. Darum herum stehen drei Entscheidungen, die wichtiger sind als das Intervall:

  • Wenn Anfragen zu scheitern beginnen, geht sie auf einmal pro Minute zurück – statt auf einen Server einzuhämmern, dem es offensichtlich bereits schwerfällt.
  • In einem Hintergrund-Tab fragt sie überhaupt nicht mehr nach und aktualisiert sich sofort, sobald der Tab wieder nach vorn kommt. Niemand betrachtet einen verborgenen Tab, und die Anfrage würde genauso viel kosten wie eine nützliche.
  • Die Zeile vor N Sekunden aktualisiert zählt lokal aufwärts, einmal pro Sekunde, und kostet überhaupt nichts. Nur um die Daten zu ändern, ist eine Anfrage nötig, nicht um sie altern zu lassen.

Nichts davon ist raffiniert. Es ist angemessen, und das ist auf einem kleinen Server die wertvollere der beiden Eigenschaften. Eine Live-Ansicht sollte nicht mehr kosten, als das, was sie beobachtet.

Ein Teil, der nicht zurückgekommen ist

Im September 2015 gab es einen Beitrag darüber, dass der Nutzer-Tab lernte, zwischen jemandem, der aktiv eine Seite liest, und jemandem, der sie in einem Hintergrund-Tab geöffnet und vergessen hatte, dass sie existiert, zu unterscheiden.

Diese Unterscheidung ist nicht zurück. Die aktuelle Liste weiß, wann ein Besucher zuletzt gesehen wurde; sie weiß nicht, ob er gerade hinschaut. Das ist tatsächlich wissenswert – ein guter Teil der „Besucher“ jeder Seite ist ein verlassener Tab – also steht es auf der Liste der noch zu bauenden Dinge.

Hoffentlich nicht noch einmal vierzehn Jahre.

Selbst ausprobieren

Der Beitrag von 2012 endete mit einem Link zu einem Live-Beispiel, was auch für diesen hier der richtige Schluss zu sein scheint. Der ursprüngliche Link funktioniert übrigens immer noch: Der Zähler dahinter lief die ganze Zeit weiter und hat 1,3 Millionen Besuche überschritten.

Hier gibt es ein Live-Beispiel, kein Konto nötig, um es anzusehen.

Anzeige