2008-09-24 12 views
8

私はhttp://domain/image/⟨uuid⟩/42x42/some_name.pngという形式のURLを持っています。 Webサーバー(nginx)は、ファイル/some/path/image/⟨uuid⟩/thumbnail_42x42.pngを検索するように設定されています。存在しない場合は、URLをバックエンド(mod_wsgi経由のDjango)に送信し、サムネイルを生成します。次に、バックエンドは、クライアントから要求されたのとまったく同じURLに302リダイレクトを送信します。この2回目の要求で、サーバーはサムネイルファイルに気づき、直接送信します。同じURLにリダイレクトするのは安全ですか?

質問は、すべてのブラウザでうまくいきますか?今までのテストでは問題はありませんでしたが、すべてのユーザエージェントがこれを意図したとおりに解釈することができますか?

更新:私は意図を明確にしましょう。現在、次のように動作します。

  1. クライアントは画像のサムネイルを要求します。
  2. サーバーはファイルが存在しないと判断し、要求をバックエンドに転送します。
  3. バックエンドはサムネイルを作成して302を返します。
  4. バックエンドはすべてのリソースを解放し、サーバーが新しく生成されたファイルを現在のクライアントと後続のクライアントに共有できるようにします。バックエンドが新しく作成された画像を果たす持つ

は、2つの理由のために悪いです:同じデータを提供する

  1. 二つの方法を作成する必要があります。
  2. サーバーは、静的コンテンツを提供する方がはるかに優れています。クライアントのリンクが極端に遅い場合はどうなりますか?バックエンドは特に高速でメモリ効率的ではなく、クライアントへのスプーン供給中に無駄になることがあります。

私は最小限の時間の間、バックエンドを使用し続けます。

更新²:多くのブラウザを使っている人のRFCの参考文献や意見は本当にありがたいです。これらのすべての肯定的な答えは楽しいですが、彼らはやや根拠がありません。

答えて

1

もしそうでなければ、クライアントは壊れています。ほとんどのクライアントは最大値までリダイレクトループを実行します。だから、バックエンドが何らかの理由でサムネイルを生成しない限り、それはうまくいくはずです。

代わりhttp://domain/djangoapp/generate_thumbnailすると、それはサムネイルと適切なコンテンツタイプを返しますし、あなたが以前にあったように

0

にはい、それは同じURIに、直接直す罰金だURLを変更することができます。

関連する問題