那天下午四点半
昨天下午四点半,我在老周的维修铺里坐着。他把笔记本转过来,屏幕上是管家婆67722论坛的登录页,转圈。38 秒,才进去。
老周说,他换了两次宽带,打了三次客服,客服说网速没问题。
我看了一眼他用的浏览器,再看一眼地址栏。就明白了大概。
不是网速的事。
很多人默认登录慢等于网络差。这个假设很省事,但基本上是错的。登录是一次多段请求,从你按下按钮到进入论坛,中间过好几道手。宽带只负责其中一段。
三个下午,三次实测
第一件事是排除变量。我让老周把电脑直接插网线,别走 Wi-Fi。14:10 测了一次,登录耗时 31 秒。比刚才的 38 秒好一点,但仍然慢得不能接受。网速这一项,基本可以划掉。
第二件事是看请求。我打开浏览器开发者工具,切到网络面板,点登录。请求列表一条条往下排。最上面那条主页面很快,几百毫秒就回来了。真正拖时间的,是中间一段跳转,它在那里停住了。
截图我给老周看了一眼。他问,这什么意思。
意思是,你等的那 30 秒,大部分耗在等一个跳转响应上。
第三件事是交叉验证。我在自己的机器上,用不同浏览器、清空缓存、换一个网络环境,各测了一遍。结果很一致:卡在同一个位置。这就不是偶然了。
卡点到底在哪
说清楚一点。登录页加载完之后,浏览器会向论坛后端发一个校验请求。这个请求里带一份会话凭证。后端拿到凭证后,不是直接放行,而是先把你重定向到一个中间页面。
这个中间页面负责两件事:一是补全用户状态,二是把跳转地址拼出来。问题出在第二件。拼接逻辑在旧凭证过期时会走一条兜底路径,这条路径的响应要等一个超时才返回。
超时时间设得不短。25 秒。
你感受到的「慢」,就是这 25 秒在身上压着。
所以换宽带、换路由器、打电话骂客服,都不会快。方向错了,力气全白费。
能自己动的地方
我不能改论坛后端。能做的只有客户端这一侧。
第一,清掉登录域下的旧 Cookie 和本地存储。旧凭证是导火索。很多人的凭证是半年前留下的,一直没清。清完再登录,兜底路径的触发概率会明显下降。老周那台机器清完之后,第一次登录用了 6 秒。
第二,别在登录页反复刷新。每刷一次,就会重新走一遍校验,旧凭证又多攒一份。越急越慢,是这里最反直觉的一点。
第三,如果站方提供备用入口,优先用备用入口。备用入口的跳转链通常短一截。这不是优化,是绕开。
第四,换一个不那么「热情」的浏览器扩展。有些安全类插件会拦截重定向,等它自己判断。判断需要时间,时间就变成了你的等待。
四件事都不难。难的是先接受一个前提:这不是网速问题。
一句我不太想修饰的话
说实话,我认为把登录慢归咎于用户网络,是一种偷懒的归因。
它便宜、好说、无法反驳。用户听不懂请求链,客服也不用解释中间页面。于是双方都在一个错误的前提上耗着。老周打了三次客服,一次都没接近过真相。
这话可能不讨喜。但归因错了,解决就是零。
真正需要改的,是那条兜底路径的超时值。25 秒对任何登录流程来说都太长。它应该有上限,或者干脆不要有。
在站方改之前,前三件事够用了。清缓存、别刷新、走备用入口。老周现在登录大概 6 到 8 秒。他说能忍了。
我说,能忍不等于对。
他笑了笑,拧开保温杯喝了一口。窗外天已经黑了。铺子里的日光灯嗡嗡响。我把笔记本合上,跟他说,先这样用着,等站方哪天想通了再说。