【问题标题】:How to get a CDN to work for Staging and Production ENVs, using CloudFront, Rails, Jammit如何使用 CloudFront、Rails、Jammit 让 CDN 用于暂存和生产环境
【发布时间】:2011-10-31 16:55:57
【问题描述】:

我刚刚将 Amazon 的 CLoudfront CDN 连接到我们的应用程序。

在 staging 和 production.rb 文件中,在 rails 中只需要:

  config.action_controller.asset_host = Proc.new { |source, request|
    if request.ssl?
      "https://cfIDhere.cloudfront.net"
    else
      # Pick a random CDN
      "http://cdn0#{source.hash % 4}.mysite.com"  
    end
  }

现在的挑战是生产环境和登台环境都这样称呼:

http://cdn02.mysite.com/assets/application.js

这会产生如此疯狂的问题。使 CDN 同时适用于 Prod 和 Staging 的最佳方式是什么?

我希望能够做这样的事情:

http://cdn02.mysite.com/assets/production/application.js
http://cdn02.mysite.com/assets/staging/application.js

有人有这方面的经验吗?谢谢

【问题讨论】:

  • 如果你刚刚做了:"http://cdn0#{source.hash % 4}.mysite.com/#{Rails.env}""http://#{Rails.env}.cdn0#{source.hash % 4}.mysite.com"?否则,您必须深入研究核心 javascript_include_tag 和相关代码来自定义路径。
  • 我最终做到了。我发现的问题是它破坏了 CSS。如果 css 有一个像这样的图像 url(/images...) 现在是无效的......想法?

标签: ruby-on-rails ruby-on-rails-3 amazon-s3 amazon-cloudfront jammit


【解决方案1】:

我会按环境隔离您的 CDN。所以 CDN{\d\d} 将是生产,然后 app-stage-cdn{\d\d} 将是暂存。

【讨论】:

    猜你喜欢
    • 2011-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-11
    • 2015-08-03
    • 2017-08-29
    • 2018-12-15
    相关资源
    最近更新 更多