通过安装在默认的Rails应用程序rails new具有config.assets.compile = false生产.
通常的做法是rake assets:precompile在部署应用程序之前运行,以确保编译所有资产管道资产.
那么如果我config.assets.compile = true投入生产会发生什么?
我precompile不再需要跑步了.我认为会发生的是第一次请求资产时,它将被编译.这将是第一次出现性能损失(这意味着您通常需要在生产中使用js运行时才能执行此操作).但除了这些缺点之外,在资产被懒散编译之后,我认为对该资产的所有后续访问都不会受到性能影响,应用程序的性能将与初始首次命中的懒惰编译之后的预编译资产完全相同.这是真的?
有什么我想念的吗?没有投入config.assets.compile = true生产的其他原因?如果我在生产中有一个JS运行时,并且愿意为首次访问资产而采取降级性能的权衡,作为不必运行的回报precompile,这是否有意义?
我正在收到页面"我们很抱歉,但是当我尝试加载我的rails应用程序时出现了问题.当我运行时
tail -f log/production.log
Run Code Online (Sandbox Code Playgroud)
我明白了
ActionView::Template::Error (rails.png isn't precompiled)
Run Code Online (Sandbox Code Playgroud)
我跑了
RAILS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
从当前目录.