[解決済み] Keep-aliveヘッダーの明確化
質問
あるサイトの構築を依頼され、共同開発者の一人が、keep-aliveヘッダを含める必要があると教えてくれました。
私はそれについてたくさん読みましたが、まだ質問があります。
<ブロッククオートオープン接続は、クライアントが Web ページのコンテンツを複数回リクエストした場合のパフォーマンスを向上させます。 サーバーは各リクエストに対応するコンテンツをより迅速に返すことができるため なぜなら、サーバーは各リクエストに対してより迅速にコンテンツを返すことができるからです。そうでなければ、サーバーは リクエストごとに新しい接続を開く必要があります。
を見てみると
-
IIS(F)が送信する場合
keep alive
ヘッダ( を送信するか、ユーザがキープアライブ ) , それはつまり (E
,C
,B
) 自分のセッションだけの接続を保存しますか? - この情報はどこに保存されるのでしょうか ( この接続はRoyiに属しています。 ) ?
- 他の誰もその接続を使用できないということでしょうか?
- もしそうなら、keep alive-header は、重複する接続のユーザーを減らすということですか?
- もしそうなら、どのくらいの期間、接続が私に保存されるのでしょうか?(言い換えれば、もし私が keep alive- "keep" を設定した場合、いつまでですか?)
p.s. 興味のある方のために :
クリック このサンプルページ はキープアライブヘッダを返します。
どのように解決するのですか?
<ブロッククオート
この情報はどこに保存されているのですか?
A
とサーバ
F
")ですか?
TCP接続は、送信元IPとポート、送信先IPとポートで認識されます。あなたの OS、すべての中間セッション認識デバイス、およびサーバーの OS は、これによって接続を認識します。
HTTPは、クライアントがサーバーに接続し、リクエストを行い、レスポンスを得るという、リクエスト・レスポンスで動作します。keep-aliveを使用しない場合、HTTPサーバーへの接続は各レスポンスの後に閉じられます。HTTP keep-alive を使用すると、特定の条件が満たされるまで、基盤となる TCP 接続を開いたままにしておくことができます。
これにより、1 つの TCP 接続で複数のリクエストとレスポンスのペアを使用できるようになり、TCP の比較的遅い接続の起動の一部を排除することができます。
IIS (F) が keep alive ヘッダーを送信する (またはユーザーが keep-alive を送信する) 場合、(E,C,B) は接続を保存することを意味するのでしょうか?
いいえ。ルーターはセッションを記憶する必要はありません。実際、同じTCPセッションに属する複数のTCPパケットがすべて同じルータを経由する必要はありません。ルーターは最適なIP経路を選んでパケットを転送するだけです。キープアライブは、クライアント、サーバー、およびその他の中間セッションを認識するデバイスのためだけのものです。
<ブロッククオート私のセッションのためだけなのでしょうか?
他の人はその接続を使用できないということですか?
それは TCPコネクションの意図 を意図しているのです。
<ブロッククオートもしそうなら、keep alive-header は、重複する接続ユーザーを減らすということでしょうか?
重複接続の定義 "重複接続"。以下を参照してください。 HTTP持続的接続 のような、いくつかのメリットとデメリットがあります。
- CPU とメモリの使用量が少ない (同時に開く接続が少ないため)。
- リクエストとレスポンスの HTTP パイプライニングを有効にします。
- ネットワークの輻輳を軽減します (TCP コネクションの数を減らします)。
- 後続のリクエストの待ち時間を短縮 (ハンドシェイクなし)。
もしそうなら、接続はどれくらいの期間保存されるのでしょうか?(言い換えれば、もし私がkeep alive- "keep"を設定した場合、いつまでですか?)
典型的なキープアライブ応答は次のようなものです。
Keep-Alive: timeout=15, max=100
参照 ハイパーテキスト転送プロトコル (HTTP) の Keep-Alive ヘッダ を参照してください (キープアライブヘッダについて、HTTP/2 のドラフトでは、両者よりも詳細に説明されています。 2616 と 2086 ):
-
ホストが設定する
timeout
パラメータは、ホスト側がアイドル状態のコネクションを閉じたままにしておく時間を指定します。ホストによってデータが送受信されていない場合、接続はアイドル状態です。 -
は
max
パラメータは、クライアントが行う、あるいはサーバが持続的な接続で行うことを許可するリクエストの最大数を表します。指定された数のリクエストとレスポンスが送信されると、このパラメータを含むホストは接続を終了することができます。
しかし、サーバーは任意の時間やリクエスト数の後に接続を閉じることができます (ただ、現在のリクエストに対するレスポンスを返している限りにおいて)。これがどのように実装されるかは、HTTP サーバーに依存します。
関連
-
[解決済み] HTTPの "Host "ヘッダーとは何ですか?
-
[解決済み] HTTPヘッダーの大文字と小文字は区別されますか?
-
[解決済み] cURL呼び出しによるHTTPリクエストを使用してヘッダーを送信する方法は?
-
[解決済み] application/x-www-form-urlencoded or multipart/form-data?
-
[解決済み】REST APIでのPUTメソッドとPATCHメソッドの使い分け 実生活でのシナリオ
-
[解決済み】Node.jsのほとんどのポートでリスニングするとEACCESエラーが発生する。
-
[解決済み】「Upgrade-Insecure-Requests」HTTPヘッダーとは何ですか?
-
[解決済み] HTTP GETリクエストにcontent-typeヘッダーは必要ですか?
-
[解決済み] URLマトリックスパラメータとクエリパラメータの比較
-
[解決済み] ブラウザがファイルのダウンロードを受信したことを検出する
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ExpressJSのX-Powered-Byを削除する方法 [重複]。
-
[解決済み] IISファイルのダウンロードがハングアップ/タイムアウトする - sc-win32-status = 64
-
[解決済み】cURLを使用してBasic HTTP認証を正しく定義する方法は?
-
[解決済み】CURL コマンドライン URL パラメータ
-
[解決済み】no-cacheとmust-revalidateの違いについて
-
[解決済み】ユーザーエージェント文字列の大きさはどれくらいになりますか?
-
[解決済み】Accept* HTTPヘッダのq=0.5とは何ですか?
-
[解決済み】HTTPの "Content-Type "ヘッダーのすべての可能な値は何ですか?
-
[解決済み] Angular2 http.get()、map()、subscribe()とobservableパターン - 基本的な理解
-
[解決済み] Cache-Control: privateとは何ですか?