73%用户流失?前端视角揪出转化漏斗的隐形断点
|
跟产品吵。去年九月,灰度开关没推完,我盯着监控大屏上那个蓝色的「转化漏斗」曲线——它在第三步就塌了,像被抽掉脊椎的蛇。PM在站会上说“73%流失”,声音很稳,像在报天气预报。我没接话,因为那天早上oncall手机震了一下,震得我手抖,咖啡洒在键盘F键上,现在那块键帽还黏着点褐色印子。 我原以为是埋点没打全。结果一查埋点日志,三百七十二次调用里,二百九十一回连window.performance.timing.navigationStart都没触发——用户压根没进JS沙箱。不是埋点错了,是根本没加载。这会儿测试正蹲在我工位旁看屏幕,手里攥着一张皱巴巴的提测单,边角都卷了,上面用红笔圈着「注册页白屏率 68.4%」,底下写着:「前端未拦截」。我瞥了眼她杯子里的枸杞水,浮着三颗,全沉底了。 发版流程走完,打包、签名、CDN刷缓存、灰度切流、验证、切全量——整整十八分钟。但没人告诉我,新引入的微前端基座脚本里,requirejs的config里写了段死循环检测:while (window.__MFS__ && !window.__MFS__.ready) { / 空转 / },而__MFS__.ready只在子应用挂载后才写。主应用先加载,卡死,页面白着,用户点两下没了耐心。这个我敢打包票。我抓包看了十七次,每次都是TTFB正常、DOMContentLoaded永远不来,FMP那条线干脆平直到底。可这个循环是两周前谁加的?前端小张写的,说是防竞态,但防的是他自己的race condition,不是用户的耐心。 我问DBA要个SQL慢查询日志,他甩过来一个txt,里面第一页全是“SELECT FROM users WHERE id = ?”,执行耗时十八毫秒——够快了。可用户根本没走到那一步。我们还在数据库连接池配额里撕,PM已经拉群@所有人:“建议排查服务端超时”。我就坐在那儿,看着咖啡杯上印的公司logo,一只歪斜的鹿角,少了一杈。后来才知道,那天下午三点二十七分,CDN边缘节点有个路由表缓存没刷净,部分省份请求被导到老版本静态资源路径——index.html回来了,但vendor.js 404。但没人查HTTP状态码,因为Sentry里只上报JS错误,不报network error。所以大家继续盯DB、盯K8s、盯Redis内存,没人看Network面板里那一排红色的404。 反常识结论来了:流失不是发生在提交那一刻,是发生在首屏之后三秒内。你信不信?用户等三秒,手指就滑走了。不是没点按钮,是他根本没看见按钮在哪。我们的「优化」全是伪命题:把button加载时间从四百五十毫秒压到二百一十毫秒——可前面白屏三秒,人早切微信了。这跟把飞机舷窗擦亮,再告诉乘客「你看得更清了」一样荒谬。小张后来重写了那段循环,改成setTimeout轮询+超时abort,但上线当晚,oncall手机又震了,这次是告警:「首屏JS执行超时(2000ms)」。他删掉了轮询,加了个try/catch兜底——结果所有失败都静默吞掉,连console.error都没打。我们以为修复了,其实只是让错误更难被发现。 工资条上绩效系数打了0.97,HR说是因为「重点项目交付延迟」。延迟啥?延迟把一个不会运行的JS塞进生产环境。我说不出口。倒不是怕丢脸,是懒得解释——你跟人讲「我修了个bug,但它藏在别人写的loader里,而loader的loader又依赖一个未发布的polyfill」,不如去倒杯水。哦,对,刚才测试自己去茶水间倒水了,水壶嘴对着纸杯晃了三下,才倒进去。水声很大,盖过了我耳机里放的那首《无言的山丘》。 所以73%不是数字,是节奏错拍。不是接口背锅,是接口压根没被调用;不是产品想当然,是他拿的埋点数据来自另一套实验流量,而实验组没开JS加载降级开关。优胜劣汰?对。留下来的不是最稳定的代码,是最早学会不报错的代码。我现在每次发版前,强制自己关掉所有监控告警弹窗,只开Network和Performance,盯着FP、FCP、TTI那三条线。如果它们其中一条比我的心跳还跳得慢,我就不点发布。但这个习惯没法写进规范里——毕竟,规范里只写「必须支持IE11」,没写「必须尊重人的三秒注意力」。
文章配图,仅供参考 下周我打算把vendor.js切片策略改掉,用import()动态加loading state,哪怕loading是段GIF。GIF再丑,也比白屏有诚意。不过这事得等小张休完婚假回来,他说婚礼上要用Vue3写请柬页,已经写了八版,每版都用不同的响应式方案……我暂且没告诉他,Vue Devtools的hook监听器,在Chrome最新beta版里,会误判defineProperty为useEffect。这事我说不准。但我知道,他杯子里的枸杞水,今天肯定又沉底了。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


