- - PR -
ブラウザのタイムアウト時の動作について
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2003-05-15 17:07
いつも参考にさせていただいています。
いま勉強がてらWebアプリケーションの構築を しています。 そのなかで理解不足なところあり悩んでいます。 ご存知の方、ご教授いただけないでしょうか。 -- ブラウザからのリクエストに対して、 あるWebアプリケーションで約10分の間、 サーバ側の処理が動きっぱなしとなる状態に なったとします。 このとき、ブラウザ自身(IE5.5SP2以降)は リクエストに対して5分間応答が無い場合、 タイムアウトと判断するようですが、その際に リクエストが再送されるような動作が起こります。 Webアプリケーションはそれを処理しようとして、 こちらの意図しない結果になります。 それについては回避策を講じるつもりです。 基本的にはWebアプリケーションのお粗末さが 目に付くところであり、課題が多いのですが、 タイムアウトになった場合、ブラウザ側では 何を行おうとしているのでしょうか。 -- 稚拙な文面で恐縮ですが、 よろしくお願いします。 | ||||
|
投稿日時: 2003-05-15 17:36
IEは30秒おきにリクエストをリトライします。
これはjava.net.HttpURLConnectionでも同じです。 ですからどんなWebApplicationも30秒以内に処理を終わらせるか 複数回のリクエストを想定してロジックを組む必要があります。 ・Threadを生成する ・定期起動処理へロジックを移管する ・リクエストが2重かチェックする(ダブルクリック対策としても有効) いずれかで対処できると思います。 [ メッセージ編集済み 編集者: zaxx_MD 編集日時 2003-05-15 17:48 ] | ||||
|
投稿日時: 2003-05-16 00:56
>IEは30秒おきにリクエストをリトライします。
便乗質問で恐縮ですが、これって以下のどれでしょう? ・コネクション接続が30秒以上 ・リクエストの送信に30秒以上 ・レスポンスが返るまでに30秒以上 クライアントIEで、重たい処理に対して、 10分くらいかかっても、処理は正常に完了して、 画面も表示されるんですが、何かの設定の問題でしょうか? (あるいは少しでもレスポンスを返せばよいとか) | ||||
|
投稿日時: 2003-05-16 09:51
そういうことです。 ・レスポンスの応答がなくなってから30秒以上ですね。 | ||||
|
投稿日時: 2003-05-16 10:14
unibon です。こんにちわ。
私は Java での Web アプリケーションの構築の経験はないのですが、 いままで Web アプリケーションの構築において、 私は 30秒という時間を意識したことはありませんでしたが、 とくに問題が生じたことはありませんでした。 ただし IE のデフォルトのタイムアウトは5分であり、 これは意識したことがありましたし、これには対処する必要がありました。 30秒というのは HTTP の Request/Response のレベルで、 そのようなやりとりがおこなわれるということでしょうか。 最初の Request の後、少なくともなにか Response が返れば、 上記の 5分まではひたすら待ったと思いますが、 そうではなく、最初の Request の後、まったく Response がなかった場合の話でしょうか。 それとも、もしかしたら、HTTP より下位のレイヤのことを指されているのでしょうか。 | ||||
|
投稿日時: 2003-05-16 13:50
それでいけるかもしれません。 そういわれてみるとそういう結果になったかもしれません。 Requestを受信した直後にヘッダー+1バイトをフラッシュすれば5分間待ちつづける かもしれませんね。間にキャッシュとかリバースプロキシーとかが挟まれてなければ。 少なくとも、コネクション接続とリクエストの送信は関係ありませんね。 インフラによって動きが変わってくるので、設計ミスを小手先で誤魔化す そういった実装を推奨するべきではありません。 | ||||
|
投稿日時: 2003-05-16 15:31
zaxx_MDさんはじめまして。
「IEは30秒おきにリクエストをリトライします。」という話ははじめてききました。 まわりの人も聞いた事がないといっています。ためしにテストした所再現しません。 なにか設定が必要なのでしょうか? また、どこにそのような情報があるのでしょうか? <テスト方法> クライアント Windows 2000 SP3/Internet Explorer 6 SP1 WEBサーバ Solaris 7 / iPlanet WEB server 4.1 SP9 snoopコマンドによりport 80のパケットを全て監視しましたが、何も送信されていません。 | ||||
|
投稿日時: 2003-05-16 16:21
スレッドを全部呼んでください。 静的コンテンツでは再現することは難しいでしょう。 私も一部認識が違っていたのですが。 「リクエストの送信を完了してから30秒以内に ヘッダーを含む1バイトもレスポンスが無い場合は リトライとして再度リクエストを送信する」仕様のようです。 |
1|2|3
次のページへ»