0

シナリオ:

  • Rails 3.2アプリを既にデプロイしており、アセットパイプラインフローを実行しました…</ li>
  • ユーザーアクションの結果として、新しいイメージが作成され、キャッシュバスティングなどのメリットのためにアセットパイプラインの一部になりたいと考えています(ただし、ユーザーがアップロードしたイメージには毎回一意のファイル名が付けられますが、それは論点です)
  • その新しいイメージのために、この時点でアセットパイプラインを使用できるようにする方法はありますか/それは良い考えですか?

これはばかげた質問だと思います。

4

1 に答える 1

1

アセットのコンパイルは単なるレーキタスクであり、いつでもタスクを呼び出すことができます。タスクは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_tagRailsビューヘルパーを使用すると、画像のURLにキャッシュバスターが自動的に追加されます。キャッシュバスターはクエリ文字列として実行されるため、にimage_tag('test.png')なり/images/test.png?1234567890ます。特定のプロキシがクエリ文字列キャッシュを「無効化」しない場合もありますが、それらは少数派です。

于 2012-06-26T03:44:19.857 に答える