問題タブ [stalled]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
778 参照

google-chrome - Chrome は、正確に 3 秒後に URL_REQUEST をキャンセルします

わかりました、これは奇妙なものです。

私は、要求されたときに多くの作業を行う php スクリプトに取り組んでいます (画像処理)。したがって、これは珍しいことではなく、10 秒、場合によっては最大 30 秒で応答を発行します。これは長いスクリプトであり、これは次の部分で重要です。

画像処理コードをログに記録しているときに、1 回だけ呼び出されるはずのプロセスが 2 回呼び出されていることに気付きました。

理由: Chrome は 3 秒後に最初のリクエストをキャンセルし、同じ URL を再度リクエストします。

URL キャンセル シーケンス

シーケンスは常に同じです。

  1. 要求された URL
  2. 3秒切れたらキャンセル
  3. http スキームによる自動リロード
  4. サーバーのHSTSによる307
  5. URL が https で再度リクエストされました
  6. これは正しくロードされます

キャンセルされたリクエストは、[タイミング] タブで [停止] として表示されます。

停止した URL リクエスト

これはChromeでのみ発生しています(私にとっては92.0.4515.107)。この動作は Firefox では見られません。

では、この魔術をどのように再現できるでしょうか。簡単です。2 つの異なるプロバイダー (GCE と OVH) の 2 つの異なるサーバーで再現でき、この URL への最初のリクエストの期間に奇妙なリンクがあります

  1. Web サーバーに新しい php スクリプトを作成し、

    <?php sleep(10); echo 'Done'; ?>

  2. Chrome でスクリプト URL を呼び出す

  3. 最初の呼び出しは成功します

  4. しかし、次のすべての呼び出しは確かに「シーケンス」をトリガーします

Chrome のログを確認したところ、これには HTTP2_SESSION とのリンクがあると考えるようになりました

上記の URL_REQUEST では、あまり学習しません。3 秒後に「CANCELLED」が表示されます。

しかし、HTTP2_SESSION には奇妙なエラーが表示されます。

チュートリアル:

  • 最初のリクエスト (機能したリクエスト) は st=0 で開始し、st=10106 で終了します (10 秒間のスリープ)
  • 2 番目のリクエスト (自動的にキャンセルされるリクエスト) は st=13362 で始まり、st=16374 (3 秒後) で終了します。
  • その後、リクエストは st=16402 でリロードされ、最終的に st=27480 に戻り、10 秒のスリープ遅延が発生します。

正直なところ、これをどうするかわかりません。これは簡単に再現できますが、なぜ起こるのかわかりません。

私の会社では内部ツールとして Chrome が主に使用されているため、不可解な理由で重い処理の URL を 2 回続けてリロードするバグが発生しています。

どんな助けでも大歓迎です。

ああ、私は持っているすべての拡張機能を無効にしました。それは役に立ちません。とにかく、Chrome ログに拡張機能の介入についての言及はありません。