【问题标题】:Rails 4 app with precompiled assets on Elastic Beanstalk with Puma and Nginx serving page with old asset links带有 Puma 和 Nginx 服务页面的 Elastic Beanstalk 上预编译资产的 Rails 4 应用程序以及旧资产链接
【发布时间】:2016-08-08 14:38:22
【问题描述】:

我必须在本地预编译资产才能使我的 JS 插件之一正常工作。

每当我对任何资产和预编译进行更改时,我都会在 public/assets 中获得一个新版本,而旧版本也在那里。当我以生产模式在本地运行时,我会看到一个包含新资产的页面。

当我部署到 EB 时,页面总是包含指向旧资产的链接。

当然,application.html.erb 使用的是动态css链接标签:<%= stylesheet_link_tag "application", media: "all" %>

production.rb 包含:

config.action_controller.perform_caching = true
config.assets.compile = true

我认为这一定与 Nginx 或 EC2 中对 html 文件的某种缓存有关,因为 puma 在本地运行。

我试过了:

  • 不同的浏览器,PC,清除缓存,禁用缓存。不是浏览器。
  • 在 nginx.conf 中设置发送文件关闭。
  • 将 html 的缓存过期设置为 -1,并通过 curl 确认我收到了 Cache-Control: no-cache
  • 重命名整个应用程序/当前文件夹。我仍然收到一个页面,但它缺少 CSS。服务器启动后实际使用的文件在哪里?
  • rake tmp:clear 在服务器上。
  • 在整个服务器上寻找任何 nginx 或 puma 缓存。我什么也没找到。
  • 在过去 2 年中连续数小时进行研究。

唯一可行的方法是rake assets:clobber,创建一个新的 EB 环境,然后部署几次。有时,即使这样也行不通。

请帮忙!

【问题讨论】:

    标签: ruby-on-rails caching nginx amazon-elastic-beanstalk puma


    【解决方案1】:

    在又无数小时未能解决此问题后,我注意到 Elastic Beanstalk 配置设置中的一个变量已更改为默认值。 RAILS_SKIP_ASSET_COMPILATION - 因为我试图自己管理资产编译,所以我将其设置为 true。将其转回 false 解决了我的问题并显着增加了我的部署时间。我的第三方 javascripts 和 gems 也都可以正常工作。

    我仍然认为这是一种解决方法,因为我应该能够手动预编译。不过,这对我来说已经足够了。

    【讨论】:

      【解决方案2】:

      我在暂存或生产服务器上缓存资产时遇到了类似的问题。当我检查资产文件的Last-Modified 属性时,例如curl -I http://url-to-the-asset-file 服务器返回旧(缓存)文件。

      解决问题的方法是更新 production.rb 文件中的资产版本。它将强制资产使用新的 MD5 哈希指纹重新编译。

      # config/environments/production.rb
      
      # Version of your assets, change this if you want to expire all your assets.
      config.assets.version = '1.1'
      

      希望这将帮助您或至少提供一些指导。

      【讨论】:

      • 感谢您的建议。我更改了版本,资产全部重新编译,但没有帮助。似乎这与正在提供的实际 html 有关。它仍在尝试链接到旧版本。
      • 您的 html 仍在使用旧指纹指向(尝试提供)资产,据我了解,更改资产版本应强制应用程序生成指向具有新指纹的资产的 html。我唯一想到的是尝试重新启动服务器,但如果它在部署期间已经完成,那么我不知道可能是什么问题:(
      猜你喜欢
      • 2015-10-08
      • 1970-01-01
      • 2013-11-14
      • 2019-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      相关资源
      最近更新 更多