アセットのコンパイルは単なるレーキタスクであり、いつでもタスクを呼び出すことができます。タスクはbundle exec rake assets:precompile
です。詳細については、http: //guides.rubyonrails.org/asset_pipeline.htmlを参照してください。
ただし、ユーザーがアップロードした画像をコンパイルするアセットとしては扱いません。そうするのは悪い考えだと思います。
代わりに、触れたように、ユーザーがアップロードした画像に一意の名前を付けます。したがって、新しい画像がアップロード/置換されると、新しい名前が生成されます。これが行われている例は、ペーパークリップの宝石にあります。画像をディスクに書き込み、データベースにレコード/参照を保存します。これらの画像にはデータベースにIDがあり、URLにはそのIDが含まれています。だからあなたは持っているでしょう/photos/4/nothing.png
そして/photos/2/yes.png
。ここで、2と4は、メタデータ/画像との関係を含むデータベースレコードを指します。
また、image_tag
Railsビューヘルパーを使用すると、画像のURLにキャッシュバスターが自動的に追加されます。キャッシュバスターはクエリ文字列として実行されるため、にimage_tag('test.png')
なり/images/test.png?1234567890
ます。特定のプロキシがクエリ文字列キャッシュを「無効化」しない場合もありますが、それらは少数派です。