亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

一道前端面試題,如何通過備用IP提高頁面的訪問成功概率?

一道前端面試題,如何通過備用IP提高頁面的訪問成功概率?

哆啦的時光機 2018-08-03 09:25:23
問:現有情況為:http://api.test.com/test.php?cf=經常訪問失敗,經與服務端協商,服務端又提供了兩個備用IP分別為:111.***.***.***和106.**.***.***,請您寫出可以讓http://api.test.com/test.php?cf=訪問成功概率增加的前端程序;哎,沒思路,沒做出來~
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

我會這么做:

  • 用一個數組保存三個請求地址,用一個變量保存實際可用地址,默認值為最常用的那個。

  • 當發生第一次請求的時候,使用 Promise 并行發起三個請求,誰先返回用誰,并把成功的請求地址賦給上面說的變量。此后的請求就只需要使用一個地址便可

  • 這個過程應該單獨封裝起來以備后續還需要檢查。

  • 原生的 Promise 需要改造來應對并行請求的 race condition,若條件允許,會直接使用第三方庫如 bluebird 或 RSVP 等等。

重點是必須并行請求,然后利用竟態來阻斷后發生的兩個請求,也就是當數組中的一個 Promise 被 resolve 之后,剩下的就不再管它了。傳統的回調方式你需要在回調內部判斷可用地址變量是否已存在然后決定是否跳過后續邏輯,但請求本身都是完成的;又及你無法事先知道哪個接口會失敗,所以你還得逐個處理 errors;所以我用帶竟態控制的 Promise,原因就是以上。


但我還是覺得一定要在前端做嗎?這個明顯去弄個反向代理更合理。


查看完整回答
反對 回復 2018-08-05
  • 2 回答
  • 0 關注
  • 883 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號