我要将我的资产从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)。
答案 0 :(得分:1)
:
使用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;部分
希望得到这个帮助。