0

Web ブラウザーにURL を入力するとhttp://localhost:8080/?noheaders.c、ブラウザー (IE、Chrome、または Firefox) に関係なく、応答する前に G-WAN が 20 秒間ブロックされているようです。

  • これは何が原因ですか?

  • どうすればそれを避けることができますか?

あなたの洞察に感謝します。

4

1 に答える 1

1

これは何が原因ですか?

これは G-WAN とは関係ありません。これは HTTP プロトコルの問題です。

このnoheaders.cスクリプトは、HTTP ヘッダーなしJSONで応答を生成する方法を示しています。この応答は、ブラウザーで実行されているコードによってフェッチされることになっています。図の例を参照してください。Javascriptcomet.c

「Content-Length」 が存在する場合、ブラウザは、指定された量のデータHTTP headerを読み込むのに必要な時間以上待つ必要はありません。

Content-Length」がないため、インターネット ブラウザは、追加データの待機を停止するタイミングを推測する必要があります (何も表示せずにしばらく待機し、タイムアウト後、受信したすべてのものを表示します)。 HTTP header

どうすればそれを避けることができますか?

このメカニズムについては、ストリーミングとチャンク エンコーディングを使用してブラウザーのブロックを防ぐ別の例で説明されています。

ここでは長さが事前にわからないため、「Content-Length」は提供されません。チャンク エンコーディングは、End-Of-Reply マーカーを受信するまで、さらにデータを読み取る必要があることをブラウザに伝えます。

于 2013-01-25T17:28:45.247 に答える