我开始研究新的Rails项目,该项目基于允许用户创建自己的“站点”的前提。每个“站点”都是根域的子域(我们将使用example.com)。因此,如果用户Foo想要在bar.example.com上创建自己的网站,则对bar.example.com页面的每个页面请求都需要根据子域获取站点表中的一行。
我的问题不是如何编写多站点应用程序,我想我对此非常了解。我的问题是,从可扩展性和性能的角度来看,为用户创建的每个站点生成一个新的rails项目会更好吗?或者可以在一个rails应用程序中运行所有站点。如果需要数字,我们假设我有100万用户,每个用户最多有5个站点,每个站点每天大约有1,000个点击。
我意识到这是一个广泛的问题,并且主要取决于我实现任何一种方法以达到可行的解决方案,但是在编写此方法的最佳方式方面的任何建议,包括优化数据库等,都将是赞赏。
答案 0 :(得分:3)
与数百万个rails应用程序相比,拥有数百万个子域的1个rails应用程序会指数级地增加。
查看此railscast,了解如何从子域开始:http://railscasts.com/episodes/221-subdomains-in-rails-3
答案 1 :(得分:2)
我不会考虑使用多个Rails项目做这样的事情,因为需要维护所有代码。通过保持集中,您可以立即更改每个人的网站的功能。
我认为你也可能通过实例化Rails的所有副本来遇到内存问题。
答案 2 :(得分:0)
@Solomon是对的。 Heroku.com使用相同的概念为其用户演示用户的应用程序。