After AJAX: Low-latency Data to (and from) the Browser

http://conferences.oreillynet.com/cs/et2006/view/e_sess/7995
Ajaxによって非同期なHTTPアクセスが一般的になりましたが、これはあくまでクライアントが任意のタイミングにデータをPULLできるにすぎません。
そうではなくて、サーバからデータをPUSHしたい場合があります。(例えばチャットとかで、全員に同じ内容を見せたいとき。具体的には はてなワンワンワールドとか)

HTTPのようなプロトコルでこういうことをする場合、素直にやろうとするとポーリング(更新がないかどうか定期的にリクエストを投げて監視すること)をするわけです。通常ポーリングは頻度(≒応答時間)と負荷/オーバーヘッドがトレードオフになります。(短い間隔でポーリングすると最新の状態に保ちやすいが、負荷が高くなりすぎる)

で、ポーリングしないでHTTP上でサーバからのPUSHを実現するためのHackとしてCometという手法を紹介してました。
要は、HTTPコネクションを終わらせずにつないでおいて、更新データを都度送り込む、というものです。
具体的には、iframeに延々とscriptタグを食わせるという手法を紹介してました。いくつか実装例もあるそうです。(GMailもそうらしい?)
普通にApacheハンドラを書くと、ハンドラからreturnするまで実際にはHTTPレスポンスヘッダを返しません。なのでApacheでこれをやろうとすると、今のところApacheそのものをHackしないと無理だと思います。現在unstableなApache2.2ではこれを実現するmoduleが実装されているそうですが。

もちろんこの場合ページを見ている間HTTPコネクションがつなぎっぱなしになるので、同時に何万人もアクセスするようなページではたぶん簡単にリソースを食いつぶせますw てことで使いどころが難しそうなのと、どうやってスケーラビリティを確保するかが課題になりそうです。(Yahoo!とかみたいにWebサーバを横に並べるだけで大丈夫な環境を作ってれば、バックエンドが許す限りスケールさせられそうですが)