Answers:
这样做是为了节省服务器资源。如果没有人使用您的应用程序,为什么要保持资源繁忙而不让真正需要它的人使用它们?
如果您的应用有大量持续的流量,则永远不会卸载它。
对此有正式说明。
您应该查看汤姆·罗宾逊(Tom Robinson)对“可伸缩性:Heroku如何工作?”的回答。在Quora上:http://www.quora.com/Scalability/How-does-Heroku-work
Heroku在许多不同的客户/应用程序之间分配服务器资源。您的应用分配了计算能力。Heroku根据资源需求进行分区。当您拥有一个需要更多功能的流行应用程序时,您可以支付更多的“ dynos”(应用程序容器),然后获得更大的回报。
但是,就您而言,您正在运行一个免费的应用程序,很少有人(如果您自己在外面)正在访问/使用。因此,Heroku会通过卸载应用程序来减少所获得的资源-实质上将其置于休眠状态-直到对您的地址提出请求为止。如果发生这种情况,并且您的应用已经闲置了很长时间,那么重新加载就需要花费一些时间。
如果重新加载时间很重要,则额外增加1个dyno可使您的应用程序入睡。
我有同样的问题。昨晚我部署了Rails 3(1.9.2)应用程序,而且运行缓慢。我知道1.9.2 / Rails 3在Heroku的BETA中,但是支持票证说应该可以按照他们发送给我的一些说明进行操作。
我了解很长一段时间后的第一个请求会花费最长的时间。说得通。但是有时仅加载甚至连10秒都没有连接到数据库的页面都是很糟糕的。
无论如何,您可能想尝试一下我要做的事情。那就是配置我的应用程序,并查看在本地花费多长时间。如果要花费400毫秒,则出问题了。但是,如果我在本地获得50毫秒的时间,但在Heroku上仍然需要10秒钟,那么肯定有问题。
显然,缓存可以帮助您,但您只能免费获得5MB内存,而且只要有一个人使用该站点,它就不会那么慢。