我有两个rails应用程序(现在都在Rails 3.1.1上),它们运行良好。但是,我对两者有依赖关系。应用程序A
通过链接到应用程序B
的数据。这些链接是自动创建的,但必须通过查找应用程序B
的数据来计算它们。我正在使用Ruby 1.9.2和Thin作为Web服务器在Windows 7上工作,这不会改变: - (
我尝试了以下内容:
get_xml_obj
中包含一些参数),从XML中读取所需的值。工作,但每次通话需要0.5s到1s左右。B
调用A
时,发现没有任何区别。当我比较花费的时间时,这些是典型的例子(这里有4个参考文献在一个网页中):
申请表A:
Started GET "/tasks/search_task/1803" for 127.0.0.1 at 2011-11-02 14:11:04 +0100
Processing by TasksController#search_task as HTML
Parameters: {"id"=>"1803"}
Rendered tasks/_tooltip.html.haml (4529.5ms)
Completed 200 OK in 4532ms (Views: 4527.5ms | ActiveRecord: 2.0ms)
cache: [GET /tasks/search_task/1865] miss
申请表B:
cache: [GET /service/get_xml_obj?key=notice&value=rails] miss
Started GET "/service/get_xml_obj?key=notice&value=rails" for 127.0.0.1 at 2011-
11-02 14:11:05 +0100
Processing by ServiceController#get_xml_obj as */*
Parameters: {"key"=>"notice", "value"=>"rails"}
Completed 200 OK in 6ms (Views: 3.0ms | ActiveRecord: 1.0ms)
和其他3个具有相似长度的呼叫(<10ms)。
那么我可以做些什么来调整检索(不直接访问数据库)?您是否知道如何衡量和调整Web服务器和中间件的任何好文档?这些只是个人应用程序,因此无法在体面的服务器上部署它们。我使用缓存来获取检索到的信息,因此随着时间的推移它变得越来越好,但1秒钟太长了,无法等待。在我想要呈现的页面中可能有超过1或2个链接。
答案 0 :(得分:1)
好的,我终于放弃并实施了以下内容:
b.rb
添加到应用models
中的A
目录。包含所有原始模型,其中基本模型(使用sti)定义如下:
class Notice < ActiveRecord::Base
self.establish_connection(
:adapter => "sqlite3",
:database => "../b/db/dev.db"
)
end
...
Notice.where(:key => 'rails')
会产生真正的Rails模型对象。整个过程大约在20分钟内完成,现在没有任何区别,包括从应用A
到B
没有包含5个链接的链接。
在某个时间点,我想知道在这里使用RESTful资源的缓慢部分是什么......