Rails 5 - 用户指定 CSS 无法在具有自定义域的 Heroku 上工作

Rails 5 - User specified CSS not working on Heroku with custom domain

我想添加一种方法,让用户指定要在网站上使用的几种颜色,而不是我的核心 CSS 中的基本颜色。我已经通过下面的代码完成了这个,但是它在我的 Heroku 托管生产环境中不起作用,特别是具有自定义域和通过 Cloudflare 路由的 DNS 的环境(即它适用于 my-app.herokuapp.com 但不是 www.my-自定义-domain.com)。如果我直接在浏览器中打开自定义 CSS 文件(通过页面源)并刷新它,那么 CSS 就会反映在网站上。这是 Heroku 的限制吗?云焰?我的方法是否不够理想?

views/layouts/application.html.erb:

<html>
  <head>
    ...
    <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => 'reload' %>
    <% if the user is signed in and has selected custom colors %>
      <%= stylesheet_link_tag(application_custom_colors_path(format: :css), media: 'all', 'data-turbolinks-track' => 'reload' ) %>
    <% end %>
    ...
  </head>
</html>

application_controller.rb

def custom_colors
  @color1 = current_user.color1
  @color2 = current_user.color2
  respond_to do |format|
    format.css
  end
end

views/application/custom_colors.css.erb

body {
  color: <%= @color1 %>;
}

正如我上面所说,这在我的本地机器上运行并使用他们的标准 my-app.herokuapp.com 域部署到 Heroku,但是当通过 Cloudflare 使用自定义域时它停止工作。非常感谢任何指导。

页面来源:

<link rel="stylesheet" media="all" href="/assets/application-3fac9a8b9a23a84ee912eb6f5438eff5514038c3646ef0a547ebb512994b6ca4.css" data-turbolinks-track="reload" />
<link rel="stylesheet" media="all" href="/application/custom_colors.css" data-turbolinks-track="reload" />

事实证明,Cloudflare 默认缓存所有具有特定扩展名的静态内容,包括 CSS 和 Javascript。为了解决这个问题,我在我的 Cloudflare 帐户中添加了一个页面规则来绕过 www.mycustomdomain.com/application/custom_colors.css 的缓存。更多信息 here.