【发布时间】:2018-12-04 03:39:19
【问题描述】:
情况
如果不指定要在 config/initializers/assets 中预编译的每个单独文件,我无法让我的供应商资产在 heroku 中预编译,因此我不得不设置
config.assets.compile = true
注意:我不需要 application.js 中的供应商资产,因为我会在需要时按页面调用它们。
无论如何,我设置了一个 Cloudfront 帐户,现在一切正常,就像它在开发中一样。但是在部署到 Heroku 时,有一个警告和一个指向 StackOverflow 帖子的链接,警告不要将 config.assets.compile 设置为 true。
Compile 在生产环境中设置为 True 如果您已启用您的应用程序 config.assets.compile = true 在生产中,您的应用程序可能 很慢。这在堆栈溢出帖子中得到了最好的描述:
当你开始编译时,会发生这样的事情:每个请求 /assets 中的文件被传递给 Sprockets。在每个请求的第一个请求中 以及它在 Rails 使用的任何东西中编译和缓存的每个资产 用于缓存(通常是文件系统)。在后续请求 Sprockets 接收请求并且必须查找指纹文件名, 检查组成的文件(图像)或文件(css和js) 资产没有被修改,然后如果有缓存版本服务 那个。
已知此设置还会导致其他运行时不稳定和 一般不推荐。相反,我们建议预编译 部署时的所有资产(这是默认设置),或者如果不是 可能在本地编译资产。
我的问题是,由于我现在使用 Cloudfront,这是否涵盖了他们警告的内容、速度等问题?
提前感谢您的任何建议:)
【问题讨论】:
标签: ruby-on-rails ruby heroku amazon-cloudfront