CDN中的铁路资产

时间:2015-09-23 09:19:33

标签: ruby-on-rails ruby-on-rails-3 asset-pipeline cdn

我要将我的资产从rails移到亚马逊cloudfront cdn。我已移动图像并将路径从/ assets / images提供给http://cdn.com/assets/iamges

现在我想移动我的样式表和JS文件,但是在rails中,所有样式表和JS文件都包含在application.css和applications.js中,并与资产管道一起提供。这就够了

<%= stylesheet_link_tag    "application" %>
<%= javascript_include_tag "application" %>

在application.html.erb中包含上面的行。如果我将所有JS文件移动到CDN意味着如何在application.html.erb文件中调用它们?我是否必须使用javascript_include_tag或任何其他方式在CDN中的资产管道中调用它们来包含所有js文件(它们至少为20-25)。

1 个答案:

答案 0 :(得分:1)

来自RailsGuides的

  

使用CDN的常见模式是设置生产应用程序   作为&#34;起源&#34;服务器。这意味着当浏览器请求资产时   从CDN和缓存未命中,它将从中获取文件   你的服务器在运行,然后缓存它。例如,如果你是   在example.com上运行Rails应用程序并配置了CDN   在mycdnsubdomain.fictional-cdn.com,然后发出请求   mycdnsubdomain.fictional-cdn.com/assets/smile.png,CDN将查询   您的服务器一次在example.com/assets/smile.png并缓存   请求。 CDN的下一个请求来自同一个URL   将点击缓存的副本。当CDN可以直接服务于资产时   请求永远不会触及您的Rails服务器。自从CDN的资产   在地理上更接近浏览器,请求更快,并且   由于您的服务器不需要花时间提供资产,因此可以   专注于尽快提供应用程序代码。

因此,您可以将文件保存在服务器中,并使CDN指向它。

在config / environments / production.rb中,将资产的主机设置为您的CDN网址,如下所示:

config.action_controller.asset_host = 'yourcdnsubdomain.cloudfront.com'

无需在asset_host中指定http

并且调用资产文件的所有链接都将转换为CDN网址。

有关详细信息,请查看:http://edgeguides.rubyonrails.org/asset_pipeline.html&#34; CDN&#34;部分

希望得到这个帮助。