Push技術
HTTP server push (HTTP streaming) は非同期データをウェブサーバからブラウザへデータを転送する方法である。HTTP server pushは幾つかの仕組みで実現することができる。
HTML5の一部であるWebSocket API はウェブサーバとクライアントが全二重のTCP接続で通信することを可能にしている。
一般的に言えば、HTTP server pushでは、ウェブサーバはレスポンスデータをクライアントに返した後も接続を切断しない。ウェブサーバは、イベント(たとえば一つまたは複数のクライアントに通知する必要がある内部データに変更が生じた場合など)が起こった場合に直ちにそれを送出できるように、接続を開いたままにしておく。もし接続を閉じてしまってたら、そのイベントの通知はクライアントから次にリクエストを受信するまで待機しておかねばならなくなる。多くのウェブサーバはCGIを介してこの機能を提供している(例えば、Apache上のNon-Parsed Headersスクリプトなど)。
pushletはもともとJavaプラットフォームウェブアプリケーションのために開発されたものであるが、これは他のウェブフレームワークにも適用可能である。
この技術では、サーバが持続的HTTP接続の利点を用いて、レスポンスを永続的に開けた状態のままにしておく(つまり、サーバはそのレスポンスを決して終わらせない)。これは実際的には、最初のページのロードが完了したとみなせる状態になった後も、ブラウザ側を引き続き「ロード中」の状態のままでいさせるために、ブラウザをだましているのである。それからサーバは定期的にJavaScriptの小さなコードを送って、ページの内容を更新し続け、これによりプッシュ機能が実現される。この技術を使うと、クライアントはサーバ側との接続を開き続けておくためにJavaアプレットやその他のプラグインを必要とせず、サーバからプッシュされた新しいイベントの通知を自動的に受けられる 。しかしながら、この手法には一つ深刻な欠点がある。それはサーバ側でブラウザ側のタイムアウトを制御する手段がないことである。ブラウザ側でタイムアウトが発生した場合はページの再読み込みが常に必要となる。