由rails new
安装的默认Rails应用程序在生产中有config.assets.compile = false
。
通常的方法是在部署应用程序之前运行rake assets:precompile
,以确保所有的资产管道资产都被编译。
那么,如果我在生产环境中设置config.assets.compile = true
会发生什么?
我不再需要运行precompile
了。I 相信将会发生的是当资产第一次被请求时,它将被编译。这将是第一次性能上的打击(这意味着你通常需要在生产中使用js运行时来做这件事)。但除了这些缺点之外,在资产被惰性编译后,我认为所有后续对该资产的访问将有没有性能命中,应用程序的性能将与预编译资产在初始的第一次命中惰性编译后一样为完全一样。这是真的吗?
我还遗漏了什么吗?还有其他不在生产环境中设置config.assets.compile = true
的原因吗?如果我在生产中有一个JS运行时,并且愿意为了资产的第一个访问而降低性能,以换取不必运行precompile
,这有意义吗?