线上app页面白屏排查
昨天工单系统突然涌进很多说app的车tab页面显示空白,我们第一时间就开始排查,现象很奇怪,首先白屏用户没有明显特征,
有下过定的也有下过定的,其次接口都没有报错,都是正常返回,当时我第一反应猜测和CDN有关系 ,而且前天晚上我们还恰好有一次发布,
大概率和这次发布有关系,后来我让前端同学从sentry服务里面能不能看出什么眉目出来,果不其然,sentry里面上报了很多chunked missing error,
经确认,这种报错是因为CDN资源加载出错导致,把对应的js资源在页面打开,发现返回的js资源是一段html,这正好验证了之前的猜想,后经排查,发现前端在处理
不存在的资源的时候,返回了一个fallback的页面,也就是线上错误缓存的html页面,真相得以大白。
7月3号发布的版本发布后,在短暂的时间内,线上存在了A(老服务),B(新服务)两个服务,用户首先通过B服务访问到了页面资源,页面资源又去访问了最新的js资源,cdn在回原时,回到了
老版本A服务上,而A又没有该资源,就把fallback返给了cdn,cdn把错误资源存了下来,等B服务全部发完,它能请求到的资源,全是fallback页面,这个时候页面就是白屏。

了解到这个原因后,我们第一时间把静态资源全部刷新了,但是还是存在部分用户依旧白屏,在经排查,用户的手机端又缓存了这一部分静态资源,除非把app卸载了,重新安装才能彻底解决这个问题,
考虑到这个动作需要给用户一一解释,4号晚上我们临时修复了一版,修复的办法就是在前端资源访问js不存在时,不返回fallback页面,而是直接返回404,当服务启动后,在重新回原缓存到正确的
静态资源。
这真的是一个愚蠢的bug。