2015-09-23 12 views
5

静的アセットがプロダクション環境でどのように機能するかについて私は頭を抱えていますが、ドキュメントは恐ろしいようですが、それはちょうど私かもしれません。プロダクト環境でのアセット、ファイルアップロード

http://www.phoenixframework.org/docs/deploymentによると、私は展開の一環としてMIX_ENV=prod mix phoenix.digestを実行する必要があります。これは、static_path/2を使用している場合は、名前に連結された文字列を使用して、すべての私の資産を複製するようだ、これは展開時にバストをキャッシュすると何かがあると思います。すばらしいです!

ダイジェスト機能はまた、次のようになり、私のPRIVフォルダ内manifest.jsonをを作成します。..

{"images/calltoaction.png":"images/calltoaction-13cfefeb09c991b12090bcf0a10f2dd2.png","fonts/fontawesome-webfont.woff2":"fonts/fontawesome-webfont-4b5a84aaf1c9485e060c503a0ff8cadb.woff2","im.....

私はフェニックスが、それらに対応するversion.Pleaseに正しい行いを資産をマップするために、これを使用するとします私は、ここで完全に間違っています。うーん、私の質問に。

私のアプリケーションでは、管理者は管理パネルで画像をアップロードできます。これは/priv/static/images/model/version/..にアップロードされています。問題は、新しくアップロードされたこれらの画像は、manifest.jsonファイルにないため、表示されないことです。

これは非常にファンキーで、新しい画像は表示されず、置き換えられた画像などもありません。どうすればこの問題を処理できますか?画像を別の場所にアップロードする必要があります。消化しないでください。

答えて

1

マニフェストはキャッシング機能です。これは、アセットを指すリンクを生成するためにstatic_pathによって使用されます。すべてのアセットで使用できない場合は、動的にアップロードされているため、使用する必要はありません。つまり、資産をアップロードしていつものようにstatic_pathを使用するだけで、開発中のように配信する必要があります。

+0

プラグインスタティックを追加してファイルに/ uploadsを使用しましたが、これはアップロードされたファイルのキャッシュを避けるようです。 :) – MartinElvar

+1

別のプラグが必要なのは変です。好奇心のために:あなたは上記の提案を試しましたか?それはうまくいかず、私の提案は遅すぎましたか? :) –

+1

アップロードした画像に 'static_path'を使用したことはありません。新しいプラグインを追加した理由は、ダイジェストマニフェストで新しいアップロードができなかったようです。 – MartinElvar