2016-07-17 40 views
0

我的應用代表用戶向另一臺服務器發送http請求。這個問題涉及以最佳方式做到這一點。Ruby on Rails:優化對另一臺服務器的多個http請求

應用程序可能需要儘快將許多http請求(對外部服務器)的結果返回給用戶。我已經使用線程來儘可能優化它。但是,我不知道當多個用戶同時使用該網站時會發生什麼情況。奇怪的是,當我模擬一些用戶同時向(本地)開發服務器發出請求時,響應時間似乎沒有受到任何影響。

我正在考慮做一個隊列http請求並處理它們的類,但是,我不知道是否要在應用程序級別或用戶級別實例化它。

本地Web服務器是webrick,生產服務器是美洲獅。

問題:

  1. 當多個用戶發出請求到我的網站(其中,對於每個請求,我的網站又必須進行多個請求到另一個網站)會發生什麼?
  2. 如何優化響應時間?
  3. 是否有我網站的用戶直接向外國網站發送請求(ajax)的可能性?
+0

我已經發布了這個問題的簡單版本[這裏](http://stackoverflow.com/questions/38453330/rails-sending-multiple-http-requests-to-a-another-server)。 –

回答

0

回答您的問題一個接一個:

  1. 是,對於每一個用戶請求,您的網站將爲你提到
  2. 對於這個「其他網站」單獨的請求,你可以緩存/存儲您在Rails緩存中提到的「其他站點」的響應,並可以根據該其他服務器返回的數據的有效性和適用性重用該響應。 More on Rails caching
  3. 你可以按你想要的方式做到這一點。但是,如果您提到的「其他站點」不是您所擁有的,那麼最好向客戶端請求服務器,然後讓服務器以最優化的方式處理響應(通過存儲或緩存響應)。這樣,您將永遠在球場上擁有球,而且您無需擔心該「其他網站」更改的迴應是否爲

請讓我知道這是否有用,或者您需要更多信息。

+0

謝謝 - 感謝您花時間回覆,並且您對第2章和第3章的回答非常有幫助。不過,問題1是主要的問題,並且打算在我寫的所有內容的背景下提問。即,對於單個用戶,我可以使用線程來最小化從外部服務器獲取多個響應所花費的時間。但是,當多個用戶向我的網站發出請求時會發生什麼?我的服務器如何執行所有這些響應,以及如何進行優化?假設單個用戶的最佳線程數是10.我應該爲多個用戶使用10個線程TOTAL嗎? –

相關問題