Die Webanalyse zählt "Besuche" statt "Seitenaufrufe":

- Ein "Seitenaufruf" wird jedes Mal gezählt, wenn eine Seite geladen wird.

- Ein "Besuch" wird beim ersten Laden einer Seite gezählt. Lädt jemand die Seite
  neu oder wechselt zu einer anderen Seite und kehrt zurück, zählt das als ein
  einziger Besuch.

In aller Regel möchten Sie Besuche erfassen, keine Seitenaufrufe. Andernfalls
würde ein Nutzer, der eine Seite zehnmal neu lädt, auch zehnmal gezählt; das
ist wenig aussagekräftig.

Diese Funktion lässt sich in den Website-Einstellungen deaktivieren: `Einstellungen →
Datenerfassung → Sessions`. Ist sie deaktiviert, gilt jeder Seitenaufruf als
eigenständiger "Besuch".

Technische Details
------------------
Die Identifikation von Besuchern erfolgt wie folgt:

1. Eine Session-ID wird als concat(siteID, User-Agent, IP) gebildet.

2. Diese wird im Arbeitsspeicher als Zuordnung Session-ID → UUIDv4 für 8 Stunden
   gespeichert.

3. Eine Zuordnung UUID → seen_paths wird (ebenfalls im Arbeitsspeicher) geführt,
   um neue Besuche für unterschiedliche Pfade zu zählen.

4. Die UUID wird in der Datenbank verwendet.

IP-Adresse und User-Agent werden nie in der Datenbank oder auf der Festplatte
gespeichert; die zufällige UUID lässt sich auf keine Weise zurückverfolgen.

Die Daten liegen ausschließlich im Arbeitsspeicher, der für grundlegende
Netzwerkvorgänge ohnehin benötigt wird.

----

Als Pseudocode:

    session_key    = site_id + user_agent + IP
    count_as_visit = false

    # We've seen this session before.
    if sessions[session_key] and sessions[session_key].newer_than(8_hours)
        # Only count as visit if this session hasn't visited this path yet.
        if not sessions[session_key].seen_path(current_path)
            count_as_visit = true
            add_current_path(sessions[session_key])
        end
    else
        # Generate new session.
        sessions[session_key] = create_random_uuid()
        add_current_path(sessions[session_key])
        count_as_visit = true
    end

    # Store pageview; only the random UUID in sessions[session_key] is stored,
    # and NOT session_key
    store_pageview()

    # Increate counter to make the charts go up.
    if count_as_visit
        increase_counter_in_database()
    end
