4

最近、最初の Django アプリを Heroku にデプロイしました。これは私のマスターのプロジェクト用なので、スケーラビリティは大きな問題ではありません。Heroku から静的ファイルとメディア ファイルを直接提供することで発生する可能性がある問題について読んだことがありますが、Amazon S3 が最適なソリューションです。これまでのところ、静的ファイル (CSS、JS) は Heroku から適切に提供されています。

ただし、メディア ファイルには少し問題があります。

ユーザーがアップロードできる唯一のメディアは写真です。繰り返しますが、これは小規模なプロジェクトであるため、ボリュームは低くなります。現在、これらの写真は適切に提供されています。しかし、更新が Heroku にプッシュされると、既存のアップロードされた写真へのリンクがページ上で壊れ、再び表示されるように再アップロードする必要があり、これは明らかに容認できません。

これが、Amazon S3 などの外部ホストまたは発生している他の何かによって解決できるメディアの提供に関する問題であるかどうかを識別しようとしています。ホスティングにお金を払いたくないのですが、それでこの問題が解決するのであれば、おそらくそれが選択されるソリューションになるでしょう.

洞察力や経験があれば歓迎します。

4

1 に答える 1

11

Heroku Web dyno のファイルシステムへの書き込みはソース管理に追加されず、「アプリの一部」とは見なされないため、これは予想される動作です。基本的に、一時ファイルを除いて、ファイルシステムへの書き込みを許可しないでください。

これは、アプリケーションに更新をプッシュするとファイルが消えるという問題だけではありません。さらに、複数の Web dyno がある場合 (Heroku アプリで最も一般的な使用例)、アップロード先の Web dyno にたまたまアクセスしたユーザーに対してのみファイルが表示されます。

解決策は、ユーザーに別のサーバーまたは S3 に直接アップロードしてアプリケーションへのリンクを渡すか、独自のサーバーにアップロードされたファイルを S3 自体などの別の宛先に自動的に送信させることです。実際には、CSS のような静的アセットも S3 からより適切に提供されますが、これは実用的な場合とそうでない場合があります。

于 2012-07-08T02:22:22.983 に答える