最近做一个老项目使用的cordova+angularjs进行手机端开发。
发现当手机自动锁屏5-7分钟之后再次打开手机操作,第一次请求无响应。由于开启了loading-bar所以导致加载条无法停止(没有响应导致)。
增加了Vconsole和httpInterceptor日志后发现 请求是peding状态,而且确实走了request之后没有走response。
查看后端+nginx发现无任何日志输出,说明请求并未到达后端。
百思不得其解。最后想起会不会是因为长连接导致的。因为nginx设置了keeplive_timeout=300。
故将其修改为60s发现此问题复现不了。猜测是因为$http对象缓存了长连接,等超时之后连接不上了一直阻塞等待响应。
正常应该使用fiddler手机抓包确认一下是否发起了请求才能证实这个原因。