我通过使用RestClient库的应用程序获取Google API请求以获取地址。使用Net :: HTTP的API请求生产速度很慢
样品请求代码 -
require 'rest-client'
require 'json'
gmaps_api_href = "https://maps.googleapis.com/maps/api/geocode/json?latlng=18.56227673,73.76804232&language=ar"
response = RestClient.get gmaps_api_href
result = JSON.parse(response)['results']
这个请求工作得很好我的本地计算机上,它1-2secs内完成。但在生产实例中,需要20秒才能完成一个请求。
由于一些安全措施,我们无法直接访问生产实例。所以我无法找到这个延迟的关键点。 做试验和错误后,我们发现,
- 如果我们要求使用curl,需要1秒的服务器
- 如果我们使用的Net :: HTTP请求做,它需要20秒才能完成一样,我们观察RestClient。
- 如果我们在小的.net应用程序中使用WebRequest发出请求,该请求将在1秒内完成。
我很难得到上述观察的区别。
请让我知道为什么是这样?以及我必须做些什么才能使其在我的Rails应用程序中工作?
相关问题,建议,我认为可能是您的服务器上的DNS问题:http://stackoverflow.com/questions/29945204/nethttp-extremely-slow-responses-for-https-requests http://stackoverflow.com/questions/9939726/ruby-net-http-opening-connection-very-slow –
感谢乔丹!为什么WebRequest在服务器上正常工作还有一件事?有什么区别吗? – kd12
Ruby的Net :: HTTP和.NET的WebRequest之间确实存在差异,就像Net :: HTTP和cURL之间的差异一样。但是,这些差异是什么,我不能说。 –