昨天夜里上线了套餐列表页二期新需求,其中有一项功能是离线化功能,因为这个功能只能在https环境下测试,而且觉得配置很简单,只做了demo单元测试而没有做系统测试,就发布上线了。
所谓离线化功能,就是缓存用户访问的信息保存在客户端,当用户再次访问时可以直接打开。
上午产品来找我说部分安卓机器有问题,抓包发现是请求方法不对(脚本里设置的是post却用get请求),我偶然问题机器的https的页面有问题 而http可以正常打开,感觉可能是离线化导致的,因为标准规定离线化只有在https协议里运行,我就想先取消掉离线化功能。离线化需要配置生效的域名和具体离线的规则,我将离线的规则匹配“meals”改为了空字符串,因为空字符串不匹配任何值(其实应该用一个字段来控制,这是我太想当然了),而离线化组件这里又没有考虑空字符串匹配的情况,导致了刚进入页面就会崩溃。更加难过的是,离线化的配置规则已经存储到了本地,也就是说即使线上改正常了,崩溃过的用户点击页面会去加载错误的离线化配置文件,导致永远崩溃。
解决办法是 找了一个app里流量大的i版页面冲掉美食域名的错误离线化配置。
觉得测试环境应该有https协议。