0
我需要將我從外部API獲得的數據提供給多個用戶請求。我想知道在這種情況下使用什麼策略。輪詢服務器爲多個用戶請求服務
例如:
- 用戶1發送對數據 「A」 與數據=>服務器開始輪詢響應請求 「A」
- 用戶2發送對數據 「A」=>服務器開始輪詢請求與數據響應「A」
- 用戶3發送對數據「B」的數據「B」
然後,對於服務器側=>服務器開始輪詢應答請求:
-
從用戶數據「A」
- 接收的請求1 =>檢查數據「A」已輪詢:
- 如果是:開始輪詢數據「A」
- 如果沒有:開始輪詢數據「 A「從外部API並開始輪詢到用戶1
數據
- 接收的請求‘A’從用戶2 =>檢查數據‘A’已輪詢:
- 如果是:開始輪詢數據」 A「
- 如果否:從外部API開始輪詢數據「A」,並開始輪詢到用戶2
從用戶數據「B」
- 接收的請求3 =>檢查數據「B」已輪詢:
- 如果是:啓動輪詢數據「B」
- 如果沒有:從外部API開始查詢數據「A」,並開始輪詢用戶3
當然,我希望做的那是什麼因爲User1和User2請求相同的da ta,服務器將不會向API提出兩倍的請求。我不知道該怎麼做。
另外,對API的請求必須輪詢,例如當用戶發出請求並且至少有一個用戶仍然連接時,每10或30秒。
關於技術,我將不得不使用NodeJS來完成。然後我想通過socket.io而不是ajax調用來完成所有這些。
請有人能解釋一個系統,可以在Node中做到這一點?
謝謝你,我做了一個小測試,它提供了其他用戶的緩存數據。但是我沒有日期/過期日期的事情做了所有這些。你能解釋一下嗎?這是否意味着我必須設置緩存到期?如果即我每隔30秒輪詢一次,那麼我的緩存應該每45秒過期一次? –
@BobbyShark我只是假設'A'會經常改變每一個,和一定的時間後,'A'將需要更新,以便用戶隨時獲得最新的數據,而不是舊的副本。 「A」將過期的日期將是'expireDate'。如果'date'超過了'expireDate',這意味着內容應該從服務器中提取。您應該儘可能少地輪詢服務器,同時仍然確保您獲得最新版本的'A' – Houseman