gpt4 book ai didi

ruby-on-rails - Rails asset_host、cloudfront 和 heroku

转载 作者:行者123 更新时间:2023-12-04 13:49:47 25 4
gpt4 key购买 nike

我在 heroku 上运行一个 Rails 4.0 应用程序,但我无法使用我在 asset_host 中设置的主机获取我的 Assets url。

我相信我的云端设置很好,因为我可以用我的云端 url 替换我的任何 Assets url,并且文件是从 heroku 中提取并缓存在云端的。

所以 https://xxxxxxxxxxxx.cloudfront.net/assets/application-xxxxxxxx.js正在缓存 https://myapp.com/assets/application-xxxxxxxxx.js正确。

问题似乎是我的 Assets 助手,例如 javascript_include_tag,从不使用 staging.rb 中的 asset_host 设置。

当我加载我的页面时,我看到的是我所有的 js 和 css 文件都是从 https://myapp.com/assets/ 提供的。

我的暂存设置如下所示:

  # Full error reports are disabled and caching is turned on
config.consider_all_requests_local = false
config.action_controller.perform_caching = true

# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = true

# Compress JavaScripts and CSS
config.assets.compress = true

# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = true

# Generate digests for assets URLs
config.assets.digest = true
#config.assets.digest = false

#config.assets.initialize_on_precompile = true

config.static_cache_control = "public, max-age=31536000"

# user Amazon Cloudfront for asset hosting
config.action_controller.asset_host = "https://xxxxxxxxxxxx.cloudfront.net"

是否存在我不知何故无法理解的配置设置的神奇组合?

最佳答案

好吧,终于弄明白是怎么回事了——我的应用程序使用的是 rails_api gem,它从标准 rails 堆栈中删除了一大堆中间件。

将我的应用程序 Controller 更改为类 ApplicationController < ActionController::Base 添加回所需的中间件,asset_host 立即开始工作。我将进一步调查以确定它是哪个中间件,并决定是否要返回 rails_api。

我随后发现的另一个问题是 rack-mini-profiler 重写缓存 header 以始终重新验证,从而抵消了 cdn 的大部分优势。我现在已在暂存和生产中禁用它,我的应用程序运行得更快!

关于ruby-on-rails - Rails asset_host、cloudfront 和 heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22571375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com