2009-09-26 32 views
18

私は "HTTP persistent connection"について読んでいますが、どういうわけか、この文脈では何が永続的であるのか理解していないようです。
詳細を教えてください。「永続的な接続」とはどういう意味ですか?

+2

カオスとは、情報交換後にクライアントとサーバーの間の接続が切断されないようにすることです。これは、情報を送信する必要があるたびに新しい接続を確立するよりはるかに高速です。 – NTDLS

答えて

18

これまでの議論はすべてブラウザ側からのものでした。ブラウザは最初に実際のページを要求し、ページを解析し、そのページをレンダリングする前に必要な他のすべてのリソースを見つけます。ブラウザは、これらのリソースおよび他の従属リソースを1つずつ要求します。したがって、永続的な接続を維持することは、接続の作成と破棄のオーバーヘッドが回避されるので、ここでは非常に効率的です。

Webサーバー側から見ると、永続的な接続はコンテンツをWebブラウザに「プッシュ」することができます。今、HTTPはこれをサポートしていません。ですから、しばらくするとページが基本的にリフレッシュされるjavascriptの回避策はほとんどありません。

これは、多くのWebベースの電子メールプロバイダで使用されているトリックで、新しいメールのバックグラウンドを継続的にチェックしていることがわかります。これにより、新しいメールが到着すると、サーバは新しいメール通知をWebブラウザに「プッシュ」するという感覚を与えます。しかし、実際には、実際には、新しいメールのためにサーバをチェックし続けるウェブブラウザです。

また、私が言いたいことは、リクエストによってページの特定の部分だけがリフレッシュされるという別のトリックがあるため、ページリフレッシュが実際に表示されないということです。 (ヒント:AJAX)

+0

非常に有益な答え! –

+1

ウェブサーバーとの接続を維持すると、ブラウザに連続してローディングバーが表示されますか? –

+1

ウェブブラウザは実際に何かを要求した場合にのみローディングバーを表示します。接続が開いているかどうかは、ブラウザのUIに反映されるべきではありません。 – Trainee4Life

28

これは、応答のプッシュアウトが完了した時点でサーバーがソケットを閉じないことを意味します(ヘッダーまたはチャンクを使用して応答の長さを指定する必要があります)ので、クライアントは同じソケット。 Webページは、ページ自体と同じサーバー上にいくつかの他の部分(画像、CSS、スクリプトなど)を要求することがあります。そのため、ソケットを同じサーバーに再利用すると、オリジナルのソケットを開き、すべての後続要求に対して新しいソケットを開きます。

+1

darkassassin93はサーブレット上でout.close()の場合に接続が切れると述べています。この場合、Java TomcatサーバーでHTTP永続接続をどのように実装できますか?または、これを実装するためにサードパーティのツールを使用する必要がありますか?もう一つの質問は、クライアント側はどうですか? –

+2

@ケビン、あなたはブラウザ( "クライアント側")を支配することはできません。独自のポリシーを確立します。 '.close'を呼び出すと、接続を閉じる(その特定の目的である)と思うので、(うまくいけば、ブラウザが協力して)接続を閉じないでください。' close'を呼び出さないでください。必ず必要です。 –

1

これは、httpまたはhttpsのWebブラウザー用の切り替えだと思います。古いhttps://があり、ブラウザの.htaccessファイルにhttpを使用している場合、この問題はyoastプラグインの1ページのクロールページで作成する必要があります。重要なエラーではないことを心配しないでください。ハッカーの場合は、あなたのSSL接続が空であれば、あなたのSSL接続にページまたはドメインを接続する必要があります。 e.b http://www.example.comとブラウザでhttps://www.example.comを閲覧すると、サイトドメインを開いて他のリンクがあります。

解決策は、ウェブサイトの完全なアドレスを常に使用します。ウェブサイトからハッカーを保護するには、あなたのウェブサイトのsslとhttps:/ pageを使用します。

この問題は、テストサイトやページで決して現れません。

関連する問題