一次偶发性前端加载异常问题分析
keep-alive-requests导致的vue懒加载失败问题分析
问题描述:
用户反馈自己进入首页总是白屏,根据了解,只有某个部门的首页白屏(因为每个部门的首页不一样),所以有了下面的分析
通过自定义登录直接进入用户所在首页会出现白屏,查看浏览器控制台和网络请求发现如下:




刚开始上怀疑是这些资源文件损坏或者不存在,去服务器查看,文件都是正常的
反复访问发现,每次访问不到的资源文件都不一样,没有一个固定的规律
分析下来这些网络请求是被浏览器取消,被取消的原因得具体分析

经过测试发现
1、禁用缓存后问题不能再复现
2、降低网速后问题不再出现
猜测大约是window.open打开同地址的页签会根据第一次的加载时间来判断取缓存是否超时
在浏览器缓存策略中,当第一个页签打开https://a.com时加载用了4秒,这时第一个页签页面中有个按钮触发了window.open("https://a.com"),此时打开第二个页签,第二个页签因为参数的原因打开实际时长要到8s,但是浏览器似乎在超过4秒以后就强制终止了第二个页签的所有加载动作
经过分析发现打开第二个页签要360个请求,但是nginx-ingress中配置的keep-alive-requests为300个,将他改为500,问题不再出现
keep-alive-requests¶
Sets the maximum number of requests that can be served through one keep-alive connection.
设置通过一个 keep-alive 连接可以服务的最大请求数。
References: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests