正文约 2000 字,阅读大约需要 6 分钟
目标读者:0-3 岁产品运营
技术难度:★☆☆☆☆
大家好,我是姬小光,欢迎来到我的专栏!本期我们来聊聊互联网产品的登录是怎么回事儿,以及如何合理地定义用户的登录次数。
那就先从我们浏览网页开始说吧。当我们打开浏览器的时候,输入一个网址,敲了回车之后,就向远程服务器发送了一个请求。这里的远程服务器,可以理解为另外一台电脑,上面存着你想要的东西。那么,这个远程服务器收到你的请求之后,就会返回给你特定的内容。
这个一来一回的过程,是无状态的。什么意思呢?就是说,如果你再执行一次同样的动作,远程服务器是不知道你前面已经操作过的,这个,就叫做无状态。
那为啥不能有状态呢?这个是由互联网基础设施 HTTP 协议的特性所决定的,现阶段就是如此,不必纠结。
那么,无状态的问题在哪里呢?很明显,作为服务端,不管你来了多少次,我还是不认识你。即使你直接告诉我,你是某某某,我也只能说:我并不能验证你到底是谁。
因此,为了能够实现更复杂的功能,就有了 Cookie 和 Session 技术。前者,你可以理解为,服务器在你的浏览器里,存了一小段数据;而后者,你可以理解为,服务器自己拿小本本记录了,跟你相关的一小段数据。
所以整个过程就变成这样了:浏览器发送请求的时候,带上了 Cookie,告诉服务器你是谁。服务器拿到 Cookie 后,验证你是你,并且将你的状态记录在 Session 中。那么,从技术上来讲,登录的过程就是:你提交给服务器一些信息,服务器验证通过之后,开始为你服务,并且记录了你的状态。这个过程就叫做会话。顾名思义,这就好像你在跟服务器谈话交流,交流之前要先认识一下,然后服务器就记住你了。而只要服务器还记得你,你就是有“登录态”的,我们后面会用到这个概念。
那么,服务器记住你之后,如果你再也不来了呢?要过多久才能把你忘记呢?这就涉及到了,会话的有效期。我们假设,最极端的情况下,有效期为 0 秒。那就退回到了无状态的阶段,就是啥也记不住,再来几遍我也不认识你。
那要是有效期是一万年呢?就是这一万年里,你随时来我都记得你。
大家可以想一下,首先,记一万年,脑子肯定要很强大了,那对应的就是服务器的存储空间要很大,浪费资源;其次,服务器认识你,是通过 Cookie 中的凭证,而不是人脸识别,人脸识别的话可以另说。那这个 Cookie 就可能被别人盗取,别人拿着你的身份来验证,也能通过,这就可能泄露你的个人信息。所以你看,会话的有效期设置也是一门艺术,适当的时候,还是要再重新验明正身才行。
但是,如果你一直操作的话,大部分的网站都会对会话进行续期。试想一下,你跟一个人明明一直在聊天,他忽然说我不认识你了,请出示身份证,那场景该有多尴尬。网站也是一样的,如果你处在会话有效期内,并且一直有动作,那么系统会在即将过期的时候给你续上,让你进入下一个有效期,至于续多久,那就看系统的策略了。
好了,回到我们最初的问题。假设你去网吧包夜,登录并浏览了某个图片视频网站,连续看了七天七夜,这算登录几次呢?
如果你定义这是一次登录,那么按照登录来统计用户的活跃度就会有问题,这个用户明明活跃了七天,却只记录了一次活跃。这里要想统计真正的活跃,就要看看,这个用户在七天内的 PV,也就是说,我们要拿到带有用户登录态的页面浏览数据,才能统计真正的活跃,只看登录次数是不行的。
我们再假设一种情况,你包夜浏览了两天图片视频网站,然后关掉了浏览器,打了一天的游戏,又回来继续浏览图片视频网站。发现不用重新输入用户名和密码,直接打开页面就能继续浏览,那这算登录几次呢?
从行为上看,你明明是两次打开浏览器,进入网站,但是只输入了一次用户名和密码,因为服务器的会话有效期大于两天,所以不用重新输入也能使用。那么,这种情况下,如果想记录为两次活跃,只看登录次数也是不行的。
所以你看,严格意义上来说,用户的登录次数,就是输入用户名密码,并且验证通过的次数。但对于业务来说,这个数据意义并不大。因为会话有效期可能一直续期,也可能卡在需要续期的时间点,用户并没有操作,然后当用户想操作的时候,立马又需要重新登录。所以,登录次数的意义不大,要结合续期情况和用户的具体行为分析,才有意义。
综上所述,你说的登录次数,可能跟我说的登录次数,完全不是一回事,所以,如果要统计你说的登录次数,就要清楚地描绘出用户的具体行为,比如带有登录态的时候,每次打开我们的网站,就算一次登录,类似这种。这样一来,登录次数的口径,其实就变成了业务指标,所以你也不用太纠结技术上是什么定义了,了解一下原理就够了。