在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/HTML/ 瀏覽器所允許的http請(qǐng)求最長(zhǎng)的響應(yīng)時(shí)間?

瀏覽器所允許的http請(qǐng)求最長(zhǎng)的響應(yīng)時(shí)間?

最近遇到一個(gè)問(wèn)題,就是前端發(fā)起http請(qǐng)求后,后端接近要10幾分鐘才能完整處理好并且響應(yīng)回來(lái),而瀏覽器在2分多種的時(shí)候,因?yàn)檎?qǐng)求一直沒(méi)有響應(yīng)而failed了,雖然后面讓后臺(tái)優(yōu)化流程去了。但是我卻有了一個(gè)疑問(wèn):
  1. 瀏覽器對(duì)于http請(qǐng)求的響應(yīng)時(shí)間是否存在最大值呢?是否超出一定時(shí)間內(nèi)無(wú)響應(yīng)就會(huì)掛起這個(gè)請(qǐng)求?
  2. 如果實(shí)在是需要設(shè)置可以允許超長(zhǎng)的請(qǐng)求,有可能做到嗎?
多謝各位大神的賜教,為了方便大家理解為什么我會(huì)提這個(gè)問(wèn)題,這里補(bǔ)充下業(yè)務(wù)的場(chǎng)景:
  • 用戶點(diǎn)擊按鈕進(jìn)行批量導(dǎo)入,然后彈框讓其選擇excel表,選擇完畢前端直接將數(shù)據(jù)發(fā)給后端處理;
  • 后端拿到excel表,將里面的數(shù)據(jù)先一一和我們的數(shù)據(jù)庫(kù)匹配,然后再將數(shù)據(jù)和天眼查(或其他類似)的數(shù)據(jù)比對(duì),比對(duì)完成再將核實(shí)后的數(shù)據(jù)保存下來(lái)返回給前端;
  • 問(wèn)題所在:

       a.前端不會(huì)限制excel表格的大小,理論上excel可以無(wú)限大;
       B.測(cè)試過(guò)當(dāng)excel里面存在超過(guò)5000條數(shù)據(jù)的時(shí)候,前端發(fā)起請(qǐng)求后,后端一直在處理,而瀏覽器在2分鐘左右的時(shí)候就因?yàn)檎?qǐng)求沒(méi)有任何響應(yīng)而failed,但是看了后端的代碼,他其實(shí)還在運(yùn)行,簡(jiǎn)單看了下,后端整個(gè)過(guò)程下來(lái)要運(yùn)行接近20分鐘
  • 目前想法:

       a.作為前端,對(duì)于這種要用戶等待時(shí)間這么長(zhǎng)的請(qǐng)求,我肯定是不同意的,會(huì)嚴(yán)重影響用戶體驗(yàn),已經(jīng)讓后端回去檢查
       B.過(guò)程中衍生了一個(gè)想法:萬(wàn)一將來(lái)真的有一天需要做這種惡心的功能,前端是否有可能做得到?
    

最后,再一次謝謝各位賜教的大神!

回答
編輯回答
任她鬧

1.超時(shí)時(shí)間肯定有,并且存在多級(jí)設(shè)定

  • 比如7層的HTTP超時(shí),在 Nginx、Apache 之類的設(shè)置
  • 也存在 4 層的 TCP 超時(shí)
  • 中間網(wǎng)絡(luò)節(jié)點(diǎn),也存在超時(shí)的可能

2.不建議設(shè)置超長(zhǎng)的請(qǐng)求

3.根據(jù)耗時(shí)的原因,來(lái)更換策略

  • 如果是運(yùn)算類型的接口導(dǎo)致的速度慢,是不是可考慮緩存接口數(shù)據(jù),提前預(yù)生成接口數(shù)據(jù)
  • 如果是下載類型,需要實(shí)時(shí)生成下載文件的,可以改成多次請(qǐng)求,

    • 第一種請(qǐng)求先申請(qǐng)下載任務(wù)
    • 第二種請(qǐng)求開(kāi)始輪訓(xùn)下載任務(wù)是否準(zhǔn)備好
    • 第三種請(qǐng)求才直接下載文件

補(bǔ)充內(nèi)容

超大型文件的上傳,前端也是可以處理的,利用 FileAPI 對(duì)文件進(jìn)行分割上傳

https://www.html5rocks.com/zh...

PS:上傳文件和數(shù)據(jù)對(duì)比,其實(shí)也可以拆分成兩個(gè)接口。

  • 上傳的接口只管上傳,怎么快,怎么體驗(yàn)好,怎么來(lái)。
  • 獲取對(duì)比后的數(shù)據(jù),這是一種運(yùn)算類型的接口,也可以單獨(dú)出來(lái)。
2017年6月8日 09:54
編輯回答
假灑脫

參見(jiàn)tcp的超時(shí)
逐級(jí)遞增,同步請(qǐng)求無(wú)法控制的,異步可以設(shè)置超時(shí)時(shí)間

2017年12月15日 11:50
編輯回答
朕略傻

瀏覽器有默認(rèn)連接超時(shí),F(xiàn)irefox 好像是115秒,Chrome 好像是5分鐘還是6分鐘。

如果后端需要處理十多分鐘才能返回結(jié)果,那肯定是要異步返回結(jié)果。不可能同步,沒(méi)理由同步,就算瀏覽器不超時(shí),你也沒(méi)必要同步返回,浪費(fèi)資源。

要及時(shí)返回處理結(jié)果,你可以用 WebSocket 和 Ajax 輪詢實(shí)現(xiàn)。

用戶上傳文件,服務(wù)器成功接受文件后返回一個(gè)上傳成功的結(jié)果,然后前端給個(gè) Loading 提示,然后定時(shí)輪詢,查詢后端處理結(jié)果,處理成功了就更新前端提示成功,沒(méi)有就繼續(xù) Loading 提示。

2017年4月19日 21:08