Contatta l'assistenza

Rispondiamo per e-mail, di solito entro due giorni.

Per prevenire abusi, Google reCAPTCHA verifica questo invio; alcuni dati vengono trasmessi a Google. Lo script viene caricato solo all'apertura di questo modulo.

← Tutti gli articoli

La lista «chi è online», annunciata nel 2012 e ora attiva

Il 25 agosto 2012, un articolo su questo blog annunciava che i campi delle statistiche avevano iniziato ad aggiornarsi da soli, e si concludeva con una frase: «La funzionalità in programma, la lista 'Chi è online', sta per arrivare!»

Quell’articolo è ancora qui. La lista che annunciava ha impiegato quattordici anni ad arrivare. Ora esiste, e il contatore a cui quell’articolo rimandava ha funzionato per tutto quel tempo.

Cosa mostra

La pagina delle statistiche ha un pannello dal vivo: quante persone si trovano sul sito in questo momento, con le più recenti elencate — il paese da cui si sono connesse, la città quando è nota, su quale pagina del sito si trovano, e da quanto tempo sono state viste l'ultima volta. Dodici alla volta, le più recenti per prime.

«In questo momento» significa negli ultimi cinque minuti. Dopo un'ora, le righe vengono eliminate del tutto.

0560nella lista dal vivoriga conservatacancellataminuti dall'ultima volta

Cosa non significa «chi»

Nessuno in quella lista viene identificato. È costruita a partire dallo stesso hash giornaliero a 16 byte descritto nell'articolo sul contare senza un cookie — non c'è alcun nome, nessun account, nessun cookie e nessun indirizzo IP salvato dietro nessuna delle righe.

Conserva inoltre solo il percorso della pagina, non l'indirizzo completo: /shop/boots, non il link intero con qualunque cosa un motore di ricerca o una newsletter abbia aggiunto in fondo.

E due persone dalla stessa città che guardano la stessa pagina sono semplicemente due righe. Niente nel sistema può stabilire se si tratta di due lettori distinti o di un solo lettore su un telefono e un laptop. Non è una svista in attesa di essere sistemata in una versione successiva. È il design scelto, ed è lo stesso compromesso che il contatore fa ovunque altrove: abbastanza per essere utile, non abbastanza per seguire in giro qualcuno.

Dal vivo senza tenere aperta una connessione

Il modo moderno di costruire questa funzione è un WebSocket, oppure i server-sent event — il browser tiene aperta una connessione e il server ci spinge dentro gli aggiornamenti man mano che avvengono. È la risposta elegante, e qui sarebbe stata quella sbagliata.

Il web server di questo sito usa un processo per ogni connessione aperta, e il suo compito reale è rispondere alle richieste dei contatori per un paio di migliaia di siti web. Una connessione tenuta aperta è un processo che non può rispondere a nessun altro. Cinquanta persone che guardano la loro pagina dal vivo significherebbero cinquanta processi fermi in attesa, pronti a consegnare un numero che cambia ogni pochi minuti.

Quindi, invece, la pagina interroga il server ogni quindici secondi, e recupera un piccolo blocco di JSON. Attorno a questo ci sono tre decisioni che contano più dell'intervallo stesso:

  • Se le richieste iniziano a fallire, rallenta a una volta al minuto — invece di continuare a martellare un server che evidentemente sta già avendo difficoltà.
  • In una scheda in background smette del tutto di interrogare il server, e si aggiorna nell'istante in cui quella scheda torna in primo piano. Nessuno sta guardando una scheda nascosta, e la richiesta costerebbe esattamente quanto una utile.
  • La riga updated N seconds ago conta in modo crescente in locale, una volta al secondo, e non costa nulla. Serve una richiesta solo per cambiare i dati, non per farli invecchiare.

Niente di tutto questo è particolarmente ingegnoso. È proporzionato, il che su un piccolo server è la proprietà più preziosa delle due. Una vista dal vivo non dovrebbe costare più da gestire di quello che sta osservando.

Una parte che non è tornata

Nel settembre 2015 c'è stato un articolo sulla scheda Users, che imparava a distinguere qualcuno che stava leggendo attivamente una pagina da qualcuno che l'aveva aperta in una scheda in background e se n'era dimenticato.

Quella distinzione non è tornata. La lista attuale sa quando un visitatore è stato visto l'ultima volta; non sa se lo sta guardando. Vale davvero la pena saperlo — una buona parte dei «visitatori» di qualsiasi sito è una scheda abbandonata — quindi è nella lista delle cose da costruire.

Speriamo non altri quattordici anni.

Un esempio dal vivo

L'articolo del 2012 si concludeva con un link a un esempio dal vivo, il che sembra il modo giusto per concludere anche questo. Quel link originale, tra l'altro, funziona ancora: il contatore dietro di esso è rimasto in funzione per tutto questo tempo e ha superato 1,3 milioni di visite.

C'è un esempio dal vivo qui, non serve alcun account per guardarlo.

Pubblicità