5

したがって、質問は基本的にこれに要約されます。

サーバーを再起動する必要なく、Rails の実稼働環境でアセットの変更を効率的に処理するにはどうすればよいでしょうか?

私たちが経験している問題は、更新された JavaScript ファイルを提供するために、アプリを実行するシン サーバーを再起動する必要があることです。

背景:

現在、Rails アプリで使用できるように、1 時間に 1 回、実行時間の長いいくつかのタスクから JavaScript ファイルにデータを生成しています。
明確にするために、新しいファイルを追加するのではなく、既存のファイルを更新/上書きします。

生成後、これらのコマンドを実行して、すべてのアセットを再プリコンパイルします。

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

ブラウザのキャッシュをクリアしてページをリロードした後も、古いアセットが提供されています。

似たような経験はありますか?それを回避するために何をしましたか?

PS。楽しい休日をお過ごしください。

4

2 に答える 2

2

つまり、私たちが最終的にやったのは、基本的に、設定することでレールにも静的アセットを提供できるようにすることです

config.serve_static_assets = trueconfig/environments/production.rb

頻繁に変更される JavaScript データ ファイルを .xml の下のディレクトリ構造に配置するだけpublic/です。これは、アセットとデータを異なる場所に分離するため、うまく機能します。

于 2012-12-22T10:40:01.620 に答える
0

Railsガイドによると:

6 キャッシングのしくみ Sprockets はデフォルトの Rails キャッシュ ストアを使用して、開発中および本番環境でアセットをキャッシュします。

アセットをキャッシュしないように指示しない限り、Rails はアセットをキャッシュします。アセット パイプラインの要点は、ブラウザとサーバー、および Rails サーバー自体がアセットをキャッシュするように促すことで、できるだけ早くアセットを提供することです。

ユース ケースでアセットを頻繁にやり直す必要がある場合は、アセット パイプラインが適していない可能性があります。

于 2012-12-21T14:40:12.940 に答える