Kes on võrgus nimekiri, mis lubati 2012. aastal ja on nüüd olemas
Sisust ja selle ülevaatamisest
Selles artiklis
25. augustil 2012 teatas selle blogi postitus, et statistikaväljad on hakanud ise uuenema, ja lõppes lausega: „Kavandatud funktsioon, nimekiri ‚Kes on praegu võrgus‘, tuleb peagi!“
See postitus on endiselt siin. Selle välja kuulutatud nimekiri jõudis kohale neljateistkümne aastaga. See on nüüd olemas ja loendur, millele see postitus viitas, on kogu aja töötanud.
Mida see näitab
Statistikalehel on reaalajapaneel: mitu inimest on saidil praegu, ja neist viimased loetletuna – riik, kust nad ühendusid, linn, kui see on teada, milline leht neil on ees ja kui kaua tagasi nad viimati nähti. Korraga kaksteist, uusimad ees.
„Praegu“ tähendab viimast viit minutit. Tunni möödudes read kustutatakse täielikult.
Mida „kes“ ei tähenda
Selles nimekirjas ei tuvastata kedagi. See on ehitatud samast 16-baidisest päevaräsist, mida kirjeldatakse postituses küpsiseta loendamisest – ühegi rea taga pole nime, kontot, küpsist ega salvestatud IP-aadressi.
See hoiab ka ainult lehe tee, mitte kogu aadressi: /shop/boots, mitte täielik link koos kõigega, mille otsingumootor või uudiskiri selle lõppu lisas.
Ja kaks inimest samast linnast, kes vaatavad sama lehte, on lihtsalt kaks rida. Süsteemis pole midagi, mis eristaks kaht lugejat ühest lugejast telefonis ja sülearvutis. See ei ole tähelepanuta jäänud asi, mis hilisemas versioonis korda tehakse. See on kavand ja see on sama kompromiss, mida loendur teeb kõikjal mujal: piisavalt kasulikuks, mitte piisavalt kellegi jälitamiseks.
Reaalajas ilma ühendust avatuna hoidmata
Kaasaegne viis selle ehitamiseks on WebSocket või serveri saadetud sündmused – brauser hoiab ühe ühenduse avatuna ja server saadab sellest värskendusi nende toimudes. See on elegantne vastus ja siin oleks see olnud vale.
Selle saidi veebiserver kasutab ühe avatud ühenduse kohta ühte protsessi ja selle tegelik töö on loenduripäringutele vastamine paarituhandele veebisaidile. Avatuna hoitud ühendus on protsess, mis ei saa kellelegi teisele vastata. Viiskümmend inimest oma reaalajalehte vaatamas tähendaks viitkümmend tegevusetut protsessi, mis ootavad numbri kohaletoimetamist, mis muutub iga paari minuti järel.
Seega leht küsib hoopis iga viieteistkümne sekundi tagant ja toob väikese JSON-ploki. Selle ümber on kolm otsust, mis on olulisemad kui intervall:
- Kui päringud hakkavad ebaõnnestuma, taandub see ühele korrale minutis – selle asemel, et taguda serverit, millel on ilmselgelt juba raske.
- Taustalehel lõpetab ta küsimise täielikultja uueneb sel hetkel, kui leht tuleb tagasi esiplaanile. Peidetud lehte ei vaata keegi ja päring maksaks täpselt sama palju kui kasulik päring.
- Rida uuendatud N sekundit tagasi loeb lokaalselt iga sekund ülespoole ega maksa üldse midagi. Päring on vaja ainult andmete muutmiseks, mitte nende vananemiseks.
Miski sellest pole nutikas. See on proportsionaalne, mis on väikesel serveril kahest väärtuslikum omadus. Reaalajavaade ei tohiks töötada rohkem kui see, mida ta vaatab.
Üks osa, mis ei tulnud tagasi
2015. aasta septembris oli postitus sellest, kuidas vaheleht Kasutajad õppis eristama kedagi, kes aktiivselt lehte loeb, kellestki, kes oli selle avanud taustalehel ja unustanud, et see on olemas.
See eristus pole tagasi. Praegune nimekiri teab, millal külastaja viimati nähti; see ei tea, kas ta vaatab. See on tõesti teadmist väärt – hea osa iga saidi „külastajatest“ on hüljatud leht – nii et see on ehitamist ootavate asjade nimekirjas.
Loodetavasti mitte veel neliteist aastat.
Proovige
2012. aasta postitus lõppes lingiga reaalajanäitele, mis tundub õige viis ka selle lõpetamiseks. See algne link muide töötab endiselt: selle taga olev loendur on kogu aja töötanud ja ületanud 1,3 miljonit külastust.
Siin on reaalajanäide, vaatamiseks pole kontot vaja.