« Programming Erlang 日本語訳 | Main | Erlangは関数型だけど難しくない »

Monday, May 07, 2007

jQueryでKeep-Aliveされない問題

ErlangでCometのサンプルを利用されている方から,Connection: close になっているよ,との指摘をいただいた.
で,早速調べてみると,IE・FirefoxではKeep-Aliveだが,Firefoxではcloseになってしまう.
ブラウザ側がリクエストするときに,Connection: close をつけているので,サーバ側の問題ではないようだ.

jQueryのソースを見てみると,

// Make sure the browser sends the right content length
if ( xml.overrideMimeType )
xml.setRequestHeader("Connection", "close");

というコードがあった.

ぐぐってみると,prototype.jsでも同様の処理がある模様.

/* Force "Connection: close" for Mozilla browsers to work around
* a bug where XMLHttpReqeuest sends an incorrect Content-length
* header. See Mozilla Bugzilla #246651.
*/
if (this.transport.overrideMimeType)
requestHeaders.push('Connection', 'close');

とあるので,必要な対策っぽい.

ただ,該当バグは
Bug 246651 – XMLHttpRequest doesn't calculate Content-Length correctly
でもうcloseされているので,1年前には直っている模様.

Keep-Aliveが使えないと,Firewallの負荷などをあげてしまいそうだけど,どっちをとるかだなぁ.
古いブラウザは知らないよ,と言えるなら,Keep-Aliveにできそうだ.
ただ,prototype.jsもjQuery.jsもこの対策をとっているということは,そういうユーザも少なからずいる,ってことなんだろうなぁ.うーむ.

|

« Programming Erlang 日本語訳 | Main | Erlangは関数型だけど難しくない »

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference jQueryでKeep-Aliveされない問題:

« Programming Erlang 日本語訳 | Main | Erlangは関数型だけど難しくない »