2012 metais pažadėtas prisijungusių lankytojų sąrašas jau veikia
Šiame straipsnyje
2012 m. rugpjūčio 25 d. šio tinklaraščio įrašas pranešė, kad statistikos laukai pradėjo atsinaujinti patys, ir baigėsi sakiniu: „Planuojama funkcija – sąrašas „Kas prisijungęs“ – jau netrukus!“
Tas įrašas vis dar čia. Jo paskelbto sąrašo teko laukti keturiolika metų. Dabar jis yra, o skaitiklis, į kurį įrašas pateikė nuorodą, veikė visą tą laiką.
Ką jis rodo
Statistikos puslapyje yra tiesioginis skydelis: kiek žmonių šią akimirką yra svetainėje ir naujausių jų sąrašas – šalis, iš kurios prisijungė, miestas, jei jis žinomas, atidarytas puslapis ir prieš kiek laiko paskutinį kartą matyti. Po dvylika, naujausi pirmi.
„Šią akimirką“ reiškia pastarąsias penkias minutes. Po valandos eilutės visiškai ištrinamos.
Ko nereiškia „kas“
Nė vieno šiame sąraše esančio žmogaus tapatybė nenustatoma. Sąrašas sudaromas pagal tą pačią 16 baitų dienos maišą, aprašytą įraše apie skaičiavimą be slapuko – nė viena jo eilutė nesusieta su vardu, paskyra, slapuku ar išsaugotu IP adresu.
Taip pat saugomas tik puslapio kelias, o ne visas adresas: /shop/boots, o ne visa nuoroda su tuo, ką jos gale pridėjo paieškos sistema ar naujienlaiškis.
O du žmonės iš to paties miesto, žiūrintys tą patį puslapį, tiesiog yra dvi eilutės. Niekas sistemoje negali atskirti dviejų skaitytojų nuo vieno skaitytojo su telefonu ir nešiojamuoju kompiuteriu. Tai nėra spraga, laukianti, kol ją sutvarkys vėlesnėje versijoje. Tai sumanymo dalis ir toks pats kompromisas, kokį skaitiklis daro visur kitur: pakankamai, kad būtų naudinga, bet nepakankamai, kad būtų galima ką nors sekti.
Tiesiogiai be nuolat atviro ryšio
Šiuolaikinis būdas tai sukurti – WebSocket arba serverio siunčiami įvykiai: naršyklė palaiko vieną atvirą ryšį, o serveris juo iškart siunčia atnaujinimus. Tai elegantiškas atsakymas, tačiau čia jis būtų buvęs netinkamas.
Šios svetainės žiniatinklio serveris kiekvienam atviram ryšiui naudoja po vieną procesą, o tikrasis jo darbas – atsakyti į poros tūkstančių svetainių skaitiklių užklausas. Atvirą ryšį palaikantis procesas negali atsakyti niekam kitam. Penkiasdešimt žmonių, stebinčių savo tiesioginį puslapį, reikštų penkiasdešimt be darbo laukiančių procesų, pasirengusių pateikti kas kelias minutes pasikeičiantį skaičių.
Todėl puslapis pats klausia kas penkiolika sekundžių ir parsisiunčia mažą JSON bloką. Su tuo susiję trys sprendimai, svarbesni už intervalą:
- Jei užklausos ima strigti, jos sulėtinamos iki vienos per minutę – užuot užvertus serverį, kuriam akivaizdžiai jau sunku.
- Foninėje kortelėje užklausos visai sustabdomos, o jai vėl tapus aktyvia iškart atnaujinama. Niekas nežiūri paslėptos kortelės, o užklausa kainuotų tiek pat, kiek naudinga.
- Eilutėje „prieš kiek sekundžių atnaujinta: N“ laikas didinamas vietoje kas sekundę, ir tai visai nieko nekainuoja. Užklausos reikia tik duomenims pakeisti, o ne jų senėjimui parodyti.
Niekas iš to nėra gudru. Tai proporcinga, o mažame serveryje ši savybė vertingesnė iš šių dviejų. Tiesioginio vaizdo palaikymas neturėtų kainuoti daugiau už tai, ką jis stebi.
Viena dalis, kuri negrįžo
2015 m. rugsėjį pasirodė įrašas apie tai, kad naudotojų kortelė išmoko atskirti aktyviai puslapį skaitantį žmogų nuo to, kuris jį atidarė foninėje kortelėje ir pamiršo.
Šis atskyrimas negrįžo. Dabartinis sąrašas žino, kada lankytojas paskutinį kartą matytas; jis nežino, ar šis žiūri. Tai išties verta žinoti – nemaža bet kurios svetainės „lankytojų“ dalis tėra palikta kortelė, – todėl tai įtraukta į numatomų sukurti dalykų sąrašą.
Tikėkimės, neprireiks dar keturiolikos metų.
Išbandykite
2012 m. įrašas baigėsi nuoroda į tiesioginį pavyzdį, tad panašu, kad taip verta baigti ir šį. Beje, pradinė nuoroda vis dar veikia: jos skaitiklis veikė visą tą laiką ir jau perkopė 1,3 milijono apsilankymų.
Čia yra tiesioginis pavyzdys, kuriam peržiūrėti paskyros nereikia.