为什么Heroku在应用程序闲置一段时间后重新编译我的资产?

在生产中(在Heroku上),不应该在启动时编译资产一次,然后再也不编译?

/production.rb config.serve_static_assets = false config.assets.compress = true config.assets.compile = false config.assets.digest = true 

当有人没有按下我的应用程序一段时间时,事情就会变得空闲,似乎资产在新的新请求进入时会被重新编译?

知道我做错了什么?

在Heroku上,如果您的应用程序闲置一小时,则dynos将进入待机状态。 这就是为什么当您重新访问应用程序时,第一次加载需要一些时间。 你提到“启动”时间 – 这正是你的dynos重新启动后发生的事情, 你的实例在你推动后不会持续运行。

当dynos恢复生命时,您的资产将需要预编译,因为您将config.assets.compile设置为false。 这种行为确实不是很平常。

如果你想避免这种情况,你可以设置一个cron作业来每半小时curl你的heroku实例。