Η λίστα των συνδεδεμένων επισκεπτών, που υποσχεθήκαμε το 2012, είναι πλέον εδώ
Στις 25 Αυγούστου 2012, ένα άρθρο σε αυτό το ιστολόγιο ανακοίνωσε ότι τα πεδία των στατιστικών είχαν αρχίσει να ανανεώνονται από μόνα τους, και έκλεινε με μια πρόταση: «Η προγραμματισμένη λειτουργία, η λίστα “Ποιος είναι συνδεδεμένος”, έρχεται σύντομα!»
Εκείνο το άρθρο βρίσκεται ακόμη εδώ. Η λίστα που ανακοίνωνε χρειάστηκε δεκατέσσερα χρόνια για να έρθει. Υπάρχει πλέον, και ο μετρητής στον οποίο παρέπεμπε εκείνο το άρθρο λειτουργεί όλο αυτό το διάστημα.
Τι δείχνει
Η σελίδα στατιστικών έχει ένα ζωντανό πλαίσιο: πόσοι άνθρωποι βρίσκονται στον ιστότοπο αυτή τη στιγμή, και τους πιο πρόσφατους από αυτούς σε λίστα – τη χώρα από την οποία συνδέθηκαν, την πόλη όπου είναι γνωστή, σε ποια σελίδα βρίσκονται και πόση ώρα πέρασε από την τελευταία φορά που εμφανίστηκαν. Δώδεκα κάθε φορά, οι νεότεροι πρώτοι.
«Αυτή τη στιγμή» σημαίνει τα τελευταία πέντε λεπτά. Μετά από μία ώρα, οι γραμμές διαγράφονται οριστικά.
Τι δεν σημαίνει το «ποιος»
Κανείς σε αυτή τη λίστα δεν ταυτοποιείται. Δημιουργείται από το ίδιο ημερήσιο hash των 16 byte που περιγράφεται στο άρθρο για τη μέτρηση χωρίς cookie – πίσω από καμία γραμμή της δεν υπάρχει όνομα, λογαριασμός, cookie ή αποθηκευμένη διεύθυνση IP.
Κρατά επίσης μόνο τη διαδρομή της σελίδας και όχι ολόκληρη τη διεύθυνση: /shop/boots, όχι τον πλήρη σύνδεσμο μαζί με ό,τι πρόσθεσε στο τέλος του μια μηχανή αναζήτησης ή ένα ενημερωτικό δελτίο.
Και δύο άνθρωποι από την ίδια πόλη που βλέπουν την ίδια σελίδα είναι απλώς δύο γραμμές. Τίποτα στο σύστημα δεν μπορεί να ξεχωρίσει δύο αναγνώστες από έναν αναγνώστη με κινητό και φορητό υπολογιστή. Αυτό δεν είναι παράλειψη που περιμένει να τακτοποιηθεί σε μια επόμενη έκδοση. Είναι ο ίδιος ο σχεδιασμός, και είναι η ίδια ισορροπία που κάνει ο μετρητής παντού: αρκετά για να είναι χρήσιμος, όχι αρκετά για να παρακολουθεί οποιονδήποτε.
Ζωντανά χωρίς ανοιχτή σύνδεση
Ο σύγχρονος τρόπος να φτιαχτεί κάτι τέτοιο είναι ένα WebSocket ή τα server-sent events – το πρόγραμμα περιήγησης κρατά ανοιχτή μία σύνδεση και ο διακομιστής στέλνει μέσω αυτής ενημερώσεις καθώς συμβαίνουν. Είναι η κομψή λύση, και εδώ θα ήταν η λάθος.
Ο διακομιστής ιστού αυτού του ιστοτόπου χρησιμοποιεί μία διεργασία ανά ανοιχτή σύνδεση, και η πραγματική του δουλειά είναι να απαντά σε αιτήματα μετρητών για μερικές χιλιάδες ιστότοπους. Μια σύνδεση που μένει ανοιχτή είναι μια διεργασία που δεν μπορεί να απαντήσει σε κανέναν άλλο. Πενήντα άνθρωποι που παρακολουθούν τη ζωντανή τους σελίδα θα σήμαιναν πενήντα διεργασίες σε αδράνεια, που περιμένουν να παραδώσουν έναν αριθμό που αλλάζει κάθε λίγα λεπτά.
Έτσι, η σελίδα ρωτά αντί γι’ αυτό κάθε δεκαπέντε δευτερόλεπτα και φέρνει ένα μικρό μπλοκ JSON. Γύρω από αυτό υπάρχουν τρεις αποφάσεις που μετρούν περισσότερο από το ίδιο το διάστημα:
- Αν τα αιτήματα αρχίσουν να αποτυγχάνουν, αραιώνει σε μία φορά το λεπτό – αντί να σφυροκοπά έναν διακομιστή που προφανώς ήδη δυσκολεύεται.
- Σε μια καρτέλα στο παρασκήνιο σταματά εντελώς να ρωτά, και ανανεώνεται τη στιγμή που η καρτέλα επιστρέφει στο προσκήνιο. Κανείς δεν κοιτάζει μια κρυφή καρτέλα, και το αίτημα θα κόστιζε ακριβώς όσο ένα χρήσιμο.
- Η ένδειξη ενημερώθηκε πριν από N δευτερόλεπτα μετρά προς τα πάνω τοπικά, μία φορά το δευτερόλεπτο, και δεν κοστίζει απολύτως τίποτα. Χρειάζεται αίτημα για να αλλάξουν τα δεδομένα, όχι για να παλιώσουν.
Τίποτα από αυτά δεν είναι έξυπνο. Είναι αναλογικό, κάτι που σε έναν μικρό διακομιστή είναι η πιο πολύτιμη από τις δύο ιδιότητες. Μια ζωντανή προβολή δεν θα έπρεπε να κοστίζει περισσότερο από αυτό που παρακολουθεί.
Κάτι που δεν επέστρεψε
Τον Σεπτέμβριο του 2015 δημοσιεύτηκε ένα άρθρο για το πώς η καρτέλα «Χρήστες» έμαθε να ξεχωρίζει κάποιον που διαβάζει ενεργά μια σελίδα από κάποιον που την είχε ανοίξει σε μια καρτέλα στο παρασκήνιο και είχε ξεχάσει ότι υπάρχει.
Αυτή η διάκριση δεν έχει επιστρέψει. Η τρέχουσα λίστα ξέρει πότε εμφανίστηκε τελευταία φορά ένας επισκέπτης· δεν ξέρει αν κοιτάζει. Αξίζει πραγματικά να το ξέρει κανείς – ένα καλό μέρος των «επισκεπτών» κάθε ιστοτόπου είναι μια ξεχασμένη καρτέλα – γι’ αυτό βρίσκεται στη λίστα με όσα θα φτιαχτούν.
Ελπίζουμε όχι σε άλλα δεκατέσσερα χρόνια.
Δοκιμάστε το
Το άρθρο του 2012 έκλεινε με σύνδεσμο προς ένα ζωντανό παράδειγμα, κάτι που μοιάζει ο σωστός τρόπος να κλείσει και αυτό. Εκείνος ο αρχικός σύνδεσμος λειτουργεί ακόμη, παρεμπιπτόντως: ο μετρητής πίσω του λειτουργεί όλο αυτό το διάστημα και έχει ξεπεράσει τα 1,3 εκατομμύρια επισκέψεις.
Υπάρχει ένα ζωντανό παράδειγμα εδώ, και δεν χρειάζεται λογαριασμός για να το δείτε.