2

I am trying to have my server serving a huge file from another server. However, to protect my credential against that remote server, I can't simply redirect the requester to the file url; on the other hand, although using StreamingHttpResponse doesn't add content to memory or hardrive, it does takes more time - the server still need to download the file from the remote then serve it, which doubles up the response time. Is there any way I can "redirect" content of the remote file, without actually downloading it? Thanks.

4

2 に答える 2

2

ファイルの読み取りとストリーミングを同時に行うことができます。

Django 1.5のコードを見てください-新しい StreamingHttpResponse を使用しています - あなたがする必要があるのは、他のサーバーから読み取るコードをジェネレーターに入れることだけです。ソケットからデータを読み取るたびに、ストリーミング出力に書き込みます。

于 2013-09-15T19:24:50.220 に答える
1

Amazon CloudFront を使用している場合、「署名付き URL」と呼ばれる概念によってこの問題を解決します。基本的に、公開鍵暗号化を使用して 1 回限りの URL を生成します。URL のみが使用可能で、特定の IP アドレスのみがコンテンツをダウンロードできる時間範囲を指定できます。他のクラウド プロバイダーにも同様の機能がある場合があります。

CloudFront を使用していなくても、ダウンロード サーバーを制御できる場合は、同様のインフラストラクチャを構築できます。基本的には、秘密鍵を使用して、タイムスタンプ、ダウンロードするファイルの名前、およびダウンロード ポリシー (有効期限と IP 範囲など) を含むメッセージに署名すると、リモート サーバーは公開鍵を使用してメッセージが有効であることを検証します。実際にサーバーから送信され、ポリシーを適用します。

これは、サーバーが最初にファイルをサーバーにダウンロードする必要がないため、リモート サーバーから大きなファイルを安全に提供する最も効率的な方法です。

于 2013-09-16T04:20:10.863 に答える