0

Firefox3.6.6を使用しています。

index.php次のコードで呼び出されたPHPスクリプトがあります。

<?php
sleep(20); die(time());
?>

2つのブラウザタブを開き、それぞれにURLをコピーしてから、各タブでEnterキーをすばやく押します。最初のタブは20秒強で完了します。2番目のタブは40秒強で完了します。

私はIEで同じ実験を行い、両方のスクリプトが互いに1秒以内、約20秒で完了します。

これは予想される動作ですか?これをテストする原因となった実際のスクリプトは、同期手順です。2回実行しようとすると、ブラウザをそこに置いて2回実行できるようになるまで待つのではなく、プロセスがすでに進行中であるというエラーを受け取るようにします。

これがFirefoxの動作方法である場合、ページが重複していること、およびリクエストを同時に実行するのではなくキューに入れる必要があることをどのように判断しますか?

ジャンクGET文字列を最後に置くことで、それをだますことができます。たとえばindex.phpindex.php?JUNK=1両方とも約20秒で完了します。

4

1 に答える 1

2

これはキャッシュメカニズムです。すべてのキャッシュを無効にしても、問題は発生しません。どうやら、FF開発者は、リクエストがまだロードされているときにキャッシュ可能である可能性があることを確認しているため、最初のリクエストを待ってから、キャッシュを使用しないことを決定し、2番目のリクエストをディスパッチします(タイムスタンプで確認できます)ログファイルの)。

キャッシュなしのヘッダーとクライアントへのデータのflush()を試してみることができます。おそらく、コンテンツがロードされた後にのみキャッシュチェックが行われると思われますが、ヘッダーを受信するときにキャッシュがオプションではないと判断できる可能性があります。 。

于 2010-07-19T19:46:35.240 に答える