我不是主人,但我现在已经使用Ruby-On-Rails
几年了,并认为自己精通它。此外,过去10年来,我一直从事网络开发人员工作,从.Net
开始。
我.Net
我们曾经在触发任何查询或进行交易之前手动创建数据库连接。但是Rails
另一方面,在为请求生成一个新线程时,会触发一包初始化过程,包括设置数据库连接。
现在我们正在开发一个项目,我们可能不需要为每个操作建立数据库连接。是否有可能覆盖默认的数据库连接功能并按行动执行(可能是before_filter
)?
PS:我想到创建一个额外的Sinatra
网络应用程序的另一种方式,它包含所有这些操作,并使用它们来完成工作或获取数据。
答案 0 :(得分:1)
嗯,你在哪里读过Rails为每个请求建立一个数据库连接?我的理解是在需要时从连接池中检出连接。
此外,我很惊讶这是一个大问题!如果您不需要访问数据库(这意味着没有身份验证,对吗?)那么您应该缓存整个响应,服务器端和客户端。
查看有关缓存的指南:http://guides.rubyonrails.org/caching_with_rails.html和Dalli https://github.com/mperham/dalli
将客户端应用程序与数据层分离(因此在API之上使用Rails)是一个很好的架构,我已经成功地用于项目。不过我会建议Grape而不是Sinatra。