【发布时间】: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