ページに複数あり、それらすべてでメソッドxmlHttpRequest
を呼び出そうとしています。abort()
FFで大活躍。一方、IEは何もしません。接続が閉じず、リクエストが完了するまで別のページに移動できません。これは何ですか?abort()
が呼び出されたときに IE が接続を閉じないのはなぜですか?
2 に答える
IEで作業を中止したことはほとんどありません。私は疲れていて、その理由を思い出せません。readyState 4 になるまでアボートできない (または、アボート時に readyState 4 に変わったのかもしれません)。いずれにせよ、Ajaxian にはそのアーカイブの奥深くで回避策があります。
http://ajaxian.com/archives/reusing-xmlhttprequest-without-abort
Parallel-AjaxリクエストとApache-Sessionロック
セッションデータは通常、スクリプトが終了した後に保存されますが、同時書き込みを防ぐためにセッションデータがロックされているため、いつでも1つのスクリプトのみがセッションを操作できます。
たとえば、フレームセットをセッションと一緒に使用する場合、このロックによりフレームが1つずつ読み込まれることがあります。できるだけ早くセッションを終了することで、すべてのフレームのロードに必要な時間を短縮できます。
したがって、ajaxスクリプトでセッションを使用できます。セッションは
session_start();
(おそらく自動的に処理されます)すぐに(できるだけ早く)続きます。session_write_close();
session_write_close();
現在のセッションを「終了」し、セッションデータを保存します。
ただし、: session_id()
は引き続き正しい(現在の)PHPSESSIDを提供するため、session_start()
必要なときにいつでも再実行するだけで、現在のセッションへの書き込みアクセスを再取得できます。
私はこれをすべてのajaxスクリプトでこのように使用して、セッション処理を実装し、すべてのブラウザーで並列要求を(中止して)許可します