2016-07-17 43 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吗? –

相关问题