如何定義和統計用戶的登錄次數?
- 2020 年 3 月 9 日
- 筆記

正文約 2000 字,閱讀大約需要 6 分鐘
目標讀者:0-3 歲產品運營
技術難度:★☆☆☆☆
大家好,我是姬小光,歡迎來到我的專欄!本期我們來聊聊互聯網產品的登錄是怎麼回事兒,以及如何合理地定義用戶的登錄次數。
那就先從我們瀏覽網頁開始說吧。當我們打開瀏覽器的時候,輸入一個網址,敲了回車之後,就向遠程伺服器發送了一個請求。這裡的遠程伺服器,可以理解為另外一台電腦,上面存著你想要的東西。那麼,這個遠程伺服器收到你的請求之後,就會返回給你特定的內容。
這個一來一回的過程,是無狀態的。什麼意思呢?就是說,如果你再執行一次同樣的動作,遠程伺服器是不知道你前面已經操作過的,這個,就叫做無狀態。
那為啥不能有狀態呢?這個是由互聯網基礎設施 HTTP 協議的特性所決定的,現階段就是如此,不必糾結。
那麼,無狀態的問題在哪裡呢?很明顯,作為服務端,不管你來了多少次,我還是不認識你。即使你直接告訴我,你是某某某,我也只能說:我並不能驗證你到底是誰。
因此,為了能夠實現更複雜的功能,就有了 Cookie 和 Session 技術。前者,你可以理解為,伺服器在你的瀏覽器里,存了一小段數據;而後者,你可以理解為,伺服器自己拿小本本記錄了,跟你相關的一小段數據。

所以整個過程就變成這樣了:瀏覽器發送請求的時候,帶上了 Cookie,告訴伺服器你是誰。伺服器拿到 Cookie 後,驗證你是你,並且將你的狀態記錄在 Session 中。那麼,從技術上來講,登錄的過程就是:你提交給伺服器一些資訊,伺服器驗證通過之後,開始為你服務,並且記錄了你的狀態。這個過程就叫做會話。顧名思義,這就好像你在跟伺服器談話交流,交流之前要先認識一下,然後伺服器就記住你了。而只要伺服器還記得你,你就是有「登錄態」的,我們後面會用到這個概念。
那麼,伺服器記住你之後,如果你再也不來了呢?要過多久才能把你忘記呢?這就涉及到了,會話的有效期。我們假設,最極端的情況下,有效期為 0 秒。那就退回到了無狀態的階段,就是啥也記不住,再來幾遍我也不認識你。
那要是有效期是一萬年呢?就是這一萬年里,你隨時來我都記得你。
大家可以想一下,首先,記一萬年,腦子肯定要很強大了,那對應的就是伺服器的存儲空間要很大,浪費資源;其次,伺服器認識你,是通過 Cookie 中的憑證,而不是人臉識別,人臉識別的話可以另說。那這個 Cookie 就可能被別人盜取,別人拿著你的身份來驗證,也能通過,這就可能泄露你的個人資訊。所以你看,會話的有效期設置也是一門藝術,適當的時候,還是要再重新驗明正身才行。
但是,如果你一直操作的話,大部分的網站都會對會話進行續期。試想一下,你跟一個人明明一直在聊天,他忽然說我不認識你了,請出示身份證,那場景該有多尷尬。網站也是一樣的,如果你處在會話有效期內,並且一直有動作,那麼系統會在即將過期的時候給你續上,讓你進入下一個有效期,至於續多久,那就看系統的策略了。
好了,回到我們最初的問題。假設你去網吧包夜,登錄並瀏覽了某個圖片影片網站,連續看了七天七夜,這算登錄幾次呢?
如果你定義這是一次登錄,那麼按照登錄來統計用戶的活躍度就會有問題,這個用戶明明活躍了七天,卻只記錄了一次活躍。這裡要想統計真正的活躍,就要看看,這個用戶在七天內的 PV,也就是說,我們要拿到帶有用戶登錄態的頁面瀏覽數據,才能統計真正的活躍,只看登錄次數是不行的。
我們再假設一種情況,你包夜瀏覽了兩天圖片影片網站,然後關掉了瀏覽器,打了一天的遊戲,又回來繼續瀏覽圖片影片網站。發現不用重新輸入用戶名和密碼,直接打開頁面就能繼續瀏覽,那這算登錄幾次呢?
從行為上看,你明明是兩次打開瀏覽器,進入網站,但是只輸入了一次用戶名和密碼,因為伺服器的會話有效期大於兩天,所以不用重新輸入也能使用。那麼,這種情況下,如果想記錄為兩次活躍,只看登錄次數也是不行的。
所以你看,嚴格意義上來說,用戶的登錄次數,就是輸入用戶名密碼,並且驗證通過的次數。但對於業務來說,這個數據意義並不大。因為會話有效期可能一直續期,也可能卡在需要續期的時間點,用戶並沒有操作,然後當用戶想操作的時候,立馬又需要重新登錄。所以,登錄次數的意義不大,要結合續期情況和用戶的具體行為分析,才有意義。
綜上所述,你說的登錄次數,可能跟我說的登錄次數,完全不是一回事,所以,如果要統計你說的登錄次數,就要清楚地描繪出用戶的具體行為,比如帶有登錄態的時候,每次打開我們的網站,就算一次登錄,類似這種。這樣一來,登錄次數的口徑,其實就變成了業務指標,所以你也不用太糾結技術上是什麼定義了,了解一下原理就夠了。

