最近做一個老項目使用的cordova+angularjs進行手機端開發。
發現當手機自動鎖屏5-7分鐘之後再次打開手機操作,第一次請求無響應。由於開啓了loading-bar所以導致加載條無法停止(沒有響應導致)。
增加了Vconsole和httpInterceptor日誌後發現 請求是peding狀態,而且確實走了request之後沒有走response。
查看後端+nginx發現無任何日誌輸出,說明請求並未到達後端。
百思不得其解。最後想起會不會是因爲長連接導致的。因爲nginx設置了keeplive_timeout=300。
故將其修改爲60s發現此問題復現不了。猜測是因爲$http對象緩存了長連接,等超時之後連接不上了一直阻塞等待響應。
正常應該使用fiddler手機抓包確認一下是否發起了請求才能證實這個原因。