Ruby on rails 我的网站需要阅读速度慢的网站,如何提高性能

Ruby on rails 我的网站需要阅读速度慢的网站,如何提高性能,ruby-on-rails,ajax,performance,proxy,cross-domain,Ruby On Rails,Ajax,Performance,Proxy,Cross Domain,我正在用rails编写一个网站,它可以让访问者输入一些域并检查它们是否已注册 当用户单击“提交”按钮时,我的网站将尝试将一些数据发布到另一个网站,并将结果读回。但那个网站对我来说太慢了,每个请求需要2到3秒钟。所以我很担心表现 例如,如果我的web服务器最多允许100个进程,那么只有30或40个用户可以同时访问我的网站。这是不可接受的,有没有办法提高性能 PS: 首先,我想使用ajax读取该网站,但由于“跨域”问题,它不起作用。所以我必须使用这个“ajax代理”解决方案 您可以使用HTTP HE

我正在用rails编写一个网站,它可以让访问者输入一些域并检查它们是否已注册

当用户单击“提交”按钮时,我的网站将尝试将一些数据发布到另一个网站,并将结果读回。但那个网站对我来说太慢了,每个请求需要2到3秒钟。所以我很担心表现

例如,如果我的web服务器最多允许100个进程,那么只有30或40个用户可以同时访问我的网站。这是不可接受的,有没有办法提高性能

PS:
首先,我想使用ajax读取该网站,但由于“跨域”问题,它不起作用。所以我必须使用这个“ajax代理”解决方案

您可以使用HTTP HEAD请求,而不是将一些数据发布到网站上,我认为该请求应该只返回该URL的标题信息

我通过谷歌搜索找到了这段代码:

require "net/http"
req = Net::HTTP.new('google.com', 80)
p req.request_head('/')

这可能比POST请求快,并且您不必等待接收该资源的全部内容。您应该能够根据响应代码确定该网站是否正在使用。

您可以使用HTTP HEAD请求,而不是将一些数据发布到网站,该请求(我认为)应该只返回该URL的标题信息

我通过谷歌搜索找到了这段代码:

require "net/http"
req = Net::HTTP.new('google.com', 80)
p req.request_head('/')

这可能比POST请求快,并且您不必等待接收该资源的全部内容。您应该能够根据响应代码确定该站点是否正在使用。

这需要更多的工作,但您可以使用类似的方法在后台处理对其他站点的请求

DelayedJob创建单独的工作进程,这些进程查看
作业
表中的工作。当用户单击submit时,将创建这样一个作业,并开始在其中一个Worker中运行。这样可以减轻Rails工作人员的负担,并保持网站的快速运行


但是,在作业运行时,必须在浏览器中创建某种轮询机制。也许使用刷新或一些简单的AJAX。这样,访问者就可以看到一条消息,如“请稍候…”,过一会儿,就会看到实际结果。

这需要更多的工作,但您可以在后台处理对其他站点的请求

DelayedJob创建单独的工作进程,这些进程查看
作业
表中的工作。当用户单击submit时,将创建这样一个作业,并开始在其中一个Worker中运行。这样可以减轻Rails工作人员的负担,并保持网站的快速运行


但是,在作业运行时,必须在浏览器中创建某种轮询机制。也许使用刷新或一些简单的AJAX。通过这种方式,访问者可以看到诸如“请稍候…”之类的消息,过一会儿,就会看到实际结果。

尝试使用Typhous而不是AJAX来获取身体。您可以使用Typhous发布该站点的域名以进行检查,并可以解析获取的响应。与其他解决方案相比,它的速度非常快。我从github repo的wiki页面上撕下的一个片段显示,您可以并行运行请求(考虑到ajax请求需要1到2秒时间,这可能是您想要的!!):


同样typhous+delayed\u job=太棒了

尝试使用Typhous而不是AJAX来获取身体。您可以使用Typhous发布该站点的域名以进行检查,并可以解析获取的响应。与其他解决方案相比,它的速度非常快。我从github repo的wiki页面上撕下的一个片段显示,您可以并行运行请求(考虑到ajax请求需要1到2秒时间,这可能是您想要的!!):


同样typhous+delayed\u job=太棒了

Rails实际上是为每个请求创建一个新进程,还是在同一个进程中创建线程?@Jon Skeet:也不是,您配置了许多工作进程,每个工作进程一次处理一个请求。@Jon Skeet:Rails实际上不提供文件,但它通常不是多线程的,因为Ruby本身不是。Rails是为每个请求创建一个新的进程,还是在同一个进程中创建线程?@Jon Skeet:也不是,您配置了许多工作线程,每个工作线程一次处理一个请求。@Jon Skeet:Rails实际上不提供文件,但它通常不是多线程的,因为Ruby本身不是。我问题中的“另一个网站”实际上是一个支持检查域名的网站。我在代码中所做的是,将一些域名发布到该站点以进行检查,并读取和解析Response页面。仅仅拿到头球是不够的。谢谢大家。我问题中的“另一个网站”实际上是一个支持检查域名的网站。我在代码中所做的是,将一些域名发布到该站点以进行检查,并读取和解析Response页面。仅仅拿到头球是不够的。谢谢大家。你的建议很有用。让我想想,试试看。非常感谢。我刚刚试过,发现它使用了一个数据库,将删除成功的作业。我的网站不使用数据库(非常简单),还有其他工具可以尝试吗?你的建议非常有用。让我想想,试试看。非常感谢。我刚刚试过,发现它使用了一个数据库,将删除成功的作业。我的网站不使用数据库(非常简单),还有其他工具可以尝试吗?谢谢你提供的信息。我只是看了泰弗斯,我非常喜欢它。它是执行“获取”工作的最佳工具。现在的问题是“延迟工作”,它使用一个数据库,这不是我想要的,没有数据库有没有类似的工具?再次感谢!谢谢你提供的信息。我只是看了泰弗斯,我非常喜欢它。它是执行“抓取”的最佳工具