Rails应用程序-使用Cloudfront通过Heroku进行资产交付

时间:2018-06-25 14:12:33

标签: ruby-on-rails ruby heroku amazon-cloudfront

情况

我无法在没有指定每个文件在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,是否可以从他们所警告的内容,速度慢等方面使我无法接受?

预先感谢您的任何建议:)

1 个答案:

答案 0 :(得分:0)

是的,您可能会受到保护。资产要求将首先到达CloudFront。在第一个请求之后,它将被缓存并且不应在您的服务器上进行编译。但是,每次资产更改时,都必须重新编译,这当然很慢。