2016-08-09 17 views
3

私はNode.jsを使用してWebアプリケーション用のアーキテクチャを設計しており、ギャラリーからクライアントにメディアサイズのファイルを送信できるようにする必要があります。ユーザーがギャラリーをブラウズすると、(ギャラリーアイテムごとに)できるだけ早くこれらのバイナリファイルが送信されます。ファイルは最大6Mbになる可能性がありますが、おそらく平均で約2Mbです。WebSocketとデータ転送のXHR

私のクライアントは、XHRの代わりにデータ転送にウェブソケットを使用することを主張しています。わかりやすく、双方向のコミュニケーションは必要ありません。

私はこのドメインでの経験が不足しており、私の推論では助けが必要です。 ここまでのポイントは、次のとおりです。

  • WebSocketを使用すると、HTTPによって提供されるクライアント側のキャッシュがすべて破損します。ギャラリー内の同じアイテムを2回訪れた場合、ユーザーはコンテンツを再ダウンロードする必要があります。
  • WebSocketメッセージは、プロキシキャッシュによって/ routedによって処理されません。それらは常に明示的なサーバーによって処理されなければなりません。
  • CDNは、広範なWebキャッシングを提供し、HTTP要求をインターセプトするために構築されています。 WebSocketsは、CDNを活用することを制限します。
  • 私は、Nodejsが並行WebSocket接続よりも数百/数千のXHRに高速に応答できると思います。

標準的なHTTPRequests経由で純粋なデータ転送を行うためにWebソケットを使用するかどうかの技術的な議論はありますか?誰もが私の点を無効にしたり明確にしたり、私の研究に役立つリンクを提供することはできますか?

私は、このリンクが非常に役に立った:私の頭の上オフhttps://www.mnot.net/cache_docs/#PROXY

+0

これらのファイルはどのような種類のファイルで、正確にはどのようなものですか。ウェブスロットを使ってランダムにユーザーのブラウザにファイルを送るのは奇妙な要求のようです。 – adeneo

+0

"クライアントは常に正しい"とは別に、ファイルをダウンロードするためにWebソケットを使用する理由はないようです。画像を表示したいだけで何も特別なことをしたくない場合は、XHRは必要ありません。 – Bergi

+0

データファイルは、3Dアセットストアのバイナリエンコードジオメトリになります。 –

答えて

4

それはHTTPを使用していますので、(速度のために不可欠である)のキャッシングで優れていること以外にも、私は、XHRのための以下の技術の引数を見ることができます:

  • HTTPは、ファイルダウンロード用の専用プロトコルです。これはネイティブにXHRインターフェイスを備えたブラウザに組み込まれているため、開発者にとってより最適化され、使いやすくなっています。
  • HTTPは、ファイルパス要求、認証などのWebソケットで手作業に必要な多くの機能を既に備えています、セッション、キャッシュ...クライアントとサーバー側の両方。
  • XHRも古いブラウザ
  • にいくつかのファイアウォールは、HTTP(S)接続

のみを許可し、より良いサポートを持っているウェブソケットを好むための任意の技術的な理由があるように思えません - あなたに影響を与える可能性がある唯一のもの選択は "クライアントは王様です"。 Websocket接続でHTTP機能を再実装するためにどれくらい支払う必要があるかを彼に伝えることで、彼を説得することができます。アプリケーションがより複雑になった場合は、安くはありません。

Btw、私はあなたの最後のポイントをサポートしません。ノードは、HTTP接続と同じくらい多くのWebソケット接続を処理できる必要があります。適切に最適化されていれば、すべてが均等になる。しかし、サーバーアーキテクチャがノードだけに基づいていない場合、おそらくノードより高速な多数のプレーンファイル提供アプリケーションがあります(HTTPキャッシングレイヤを数えなくても)。

+0

このフィードバックに感謝します。 –

関連する問題