3

私はWebアプリケーションに取り組んでおり、SocketioでWebSocketなどをテストしています。現時点では、Socketio を使用した requierejs のようなソリューションを考えています。正常に動作しており、Javascript ファイルを読み込んで "new Function()" で解析できます (セキュリティ?)。ファイルを「通常」(スクリプト要素を使用) AMD でロードした場合、パフォーマンスは向上しますか?

system.create.script(['rg.observable', 'rg.route', 'rg.bindings.*', 'rg.utils.*'], function() {

    var bind = function(node) {}
    return bind;

});

ありがとう

4

1 に答える 1

0

td;dr、時間を費やす価値があるとは本当に思いません。

パフォーマンスについて尋ねると、本番環境で試してみる必要があると思います。

可動部分が多すぎるため、それぞれが 1 つのケースでより高速になる可能性があります。まず、さまざまなブラウザーが登場します。それぞれのブラウザーは、さまざまな場所で高速または低速になる可能性があります。次に、socket.io は、ブラウザーとネットワークのサポートに応じて異なるトランスポートを持ちます (Websocket はどこでもサポートされているわけではありません)。次に、高帯域幅または低帯域幅または遅延を持つ可能性のあるクライアント ネットワークが続きます。また、サーバーの負荷とサーバーの数によって、どちらが高速になるかが影響を受ける可能性があります。

しかし、私の経験から(あまり多くはありませんが)、これはどのように見えるかです:

アプリケーションが十分に小さい場合、requirejs モジュールをコンパイルして 1 つまたは 2 つのファイルに圧縮し、それを通常の http で提供することをお勧めします。ほとんどの場合、socket.io スクリプトがダウンロードされて実行されるのを待ち、socket.io トランスポートが設定されるのを待ち (ハンドシェイクなど)、依存関係を動的に解決する必要があるため、socket.io を動的にロードするよりも高速です。ウォーターフォール効果がすぐそこに発生します。

しかし、多くのモジュールを含む巨大なアプリケーションがあり、最初にすべてをロードしたくない場合 (ユーザーがロードするたびにすべての機能を使用しないような非常に重いものを考えてみましょう) は、調べる価値があります。しかし、違いは、1 つの websocket 接続 (http も使用するため、他の socket.io トランスポートを無視しましょう) と 2 つまたは 3 つ (これ以上、何か間違ったことをしていることを意味します!) の http リクエストしかないことです。

技術的には、http キープアライブを使用している場合、ブラウザは http 接続を 1 分以上維持するため、適切な設定が行われていると仮定すると、両方とも同じ時間がかかるはずです。 Websocket 接続に似ています。ここで、SPDY を投入すると、socket.io の使用はさらに遅くなる可能性があります。これは、余分なオーバーヘッドになるためです。

モジュールを動的にロードする優れた効率的な方法について話しているので、次の講演をご覧ください: Malte Ubl & John Hjelmstad: A Novel, effective approach to JavaScript loading

于 2014-04-14T14:24:53.907 に答える