私は、(とりわけ) ユーザーが Web API を介して写真をアップロードできるようにする Web サイトを構築しています。ユーザーの画像は azure ストレージ BLOB に保存され、ユーザー アルバムに表示され、ソーシャル メディアで共有されます。このサイトは、Azure Web サイトとしてホストされます。データ転送コストを最小限に抑えたいと思っています。Azure Web サイトとテーブル/BLOB ストレージ間のデータ転送にはデータ転送料金が発生しないことを理解しています (「アウトバウンド」とは見なされないため)、Azure Web サイトの外部から要求されたデータにはデータ転送料金が発生します。これに対応して、画像をブラウザに公開するための 2 つの戦略があります。
1.) Azure ストレージ内のイメージ BLOB への URI 経由 (例: ローカル ストレージ アカウントhttp://ipv4.fiddler:10000/devstoreaccount1/bcb2ad7581.jpg)
2.) ストレージから画像バイトをダウンロードして返す Web API 経由。たとえば、ローカル ホストhttp://localhost:58559/api/image/bcb2ad7581.jpg の場合
これらは私の仮定です。ストレージへの直接アクセス (上記の方法 1) の方が効率的です。Web API (上記の方法 2) を介して画像にアクセスすると、直接アクセスでは発生しないオーバーヘッドが発生するはずですよね? 各 Web API 要求は、asp .net スレッドと CPU サイクルを消費する必要があります。処理された Web API イメージ リクエストごとに、キューに入れることができず、キューに入れる必要がある、サイト上の他の Web API リソースに対するリクエストが 1 つ少なくなります。一方、画像が共有されている外部サイトでは、画像リクエストごとにデータ転送コストが (他のコストとともに) 追加されます。方法 1 でアクセスした場合。
したがって、私の戦略は、ストレージへの直接リンクを介してサイト内の画像にアクセスすることです (方法 1)。たとえば、ユーザーがアルバムを開くと、すべてのタグの src 属性に azure blob uri が含まれます。ただし、ユーザーが Facebook アイコンをクリックして共有すると、Web API を介して画像へのリンクが提供されます (方法 2)。ユーザーは「PinIt」ボタンなどのプラグインを使用してそのすべてをバイパスできることを認識していますが、それで問題ありません。
私はこのことだけを学んでいるので、私は道を外れている可能性があります. Azure Web サイトにアウトバウンド転送コストが適用されないというのは間違っていますか? 私はそうは思いませんが、控えめに言っても、価格設定モデル全体が混乱しています.
タグと src 属性を使用してブラウザーの HTML ページから BLOB ストレージにアクセスしており、アウトバウンド データ転送と見なされます。HTMLページがAzure Webサイトドメインからのものであっても? つまり、html クライアントではなく、サーバー側のコードがストレージにアクセスする場合にのみ無料ですか?
方法 2 (実際に方法がある場合) によって節約されたデータ転送コストはありますか? Web API メソッドに関連付けられた別のコスト (帯域幅コストなど) によって単純に相殺されますか?
BLOB ストレージへの直接アクセスのパフォーマンス上の利点について間違っているのでしょうか、それとも Web API 要求のオーバーヘッドについて間違っているのでしょうか?
設計の初期段階なので、必要に応じて Azure を捨てることができます。私はそれが私が探しているものだと思うので、むしろしたくありません。私はただで何かを欲しがるのではなく、私が消費するサービスに対して喜んでお金を払います. 当然のことながら、私は自分の無知が犠牲になることを望んでいません。
私はこれについてあなたのアドバイスをすることができました、そして本当にあなたの助けに感謝します.