情况
我无法在没有指定每个文件在config / initializers / assets中进行预编译的情况下让我的供应商资产在heroku中进行预编译
config.assets.compile = true
注意:我不需要application.js中的供应商资产,因为在需要它们的时候,我会按每页调用它们。
无论如何,我设置了一个Cloudfront帐户,现在一切都与开发中的一样。但是在部署到Heroku时,会出现警告和指向StackOverflow帖子的链接,警告不要将config.assets.compile设置为true。
在生产环境中,编译设置为True(如果已启用应用程序) 要在生产环境中使用config.assets.compile = true,您的应用程序可能 会很慢。最好在堆栈溢出文章中对此进行描述:
进行编译时,将发生以下情况:每次请求 / assets中的文件被传递到Sprockets。在每个的第一个请求上 以及所有资产被编译并缓存在Rails所使用的任何资源中 用于缓存(通常是文件系统)。根据后续要求,链轮 收到请求并必须查找指纹文件名, 检查构成文件的文件(图像)或文件(css和js) 资产未修改,然后提供缓存版本 那个。
也已知此设置会导致其他运行时不稳定和 通常不建议。相反,我们建议您进行预编译 您所有已部署的资产(默认设置),否则 可能在本地编译资产。
我的问题是,由于我现在正在使用Cloudfront,是否可以从他们所警告的内容,速度慢等方面使我无法接受?
预先感谢您的任何建议:)
答案 0 :(得分:0)
是的,您可能会受到保护。资产要求将首先到达CloudFront。在第一个请求之后,它将被缓存并且不应在您的服务器上进行编译。但是,每次资产更改时,都必须重新编译,这当然很慢。