5

所以问题基本上归结为:

您如何在无需重新启动服务器的情况下在生产 Rails 环境中有效地处理不断变化的资产?

我们遇到的问题是,我们必须重新启动运行应用程序的瘦服务器才能提供更新的 javascript 文件。

一些背景:

现在,我们每小时一次将来自几个长时间运行的任务的数据生成到 javascript 文件中,以便我们可以在 Rails 应用程序中使用它。
需要明确的是,我们更新/覆盖现有文件,而不是添加新文件。

生成后,我们运行这些命令以重新预编译所有资产。

bundle exec rake assets:precompile
bundle exec rake rails_group=assets assets:clean RAILS_ENV=production

仍然在清除浏览器缓存并重新加载页面后,我们仍然可以使用旧资产。

你们有没有类似的经历;你做了什么来解决它?

PS。祝大家节日快乐!

4

2 回答 2

2

所以,我们最终做的基本上是让 Rails 也通过设置来服务静态资产

config.serve_static_assets = trueconfig/environments/production.rb

并将经常更改的 javascript 数据文件放入public/. 这很有效,因为它还将资产和数据分离到不同的位置。

于 2012-12-22T10:40:01.620 回答
0

根据 Rails 指南:

6 缓存的工作原理 Sprockets 使用默认的 Rails 缓存存储来缓存开发和生产中的资产。

Rails 会缓存你的资源,除非你告诉它不要缓存它们。资产管道的重点是通过鼓励浏览器和服务器以及 Rails 服务器本身缓存资产来尽快提供资产。

如果您的用例涉及经常重做资产,那么资产管道可能不适合您。

于 2012-12-21T14:40:12.940 回答