問題タブ [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.
google-chrome - Chrome は、正確に 3 秒後に URL_REQUEST をキャンセルします
わかりました、これは奇妙なものです。
私は、要求されたときに多くの作業を行う php スクリプトに取り組んでいます (画像処理)。したがって、これは珍しいことではなく、10 秒、場合によっては最大 30 秒で応答を発行します。これは長いスクリプトであり、これは次の部分で重要です。
画像処理コードをログに記録しているときに、1 回だけ呼び出されるはずのプロセスが 2 回呼び出されていることに気付きました。
理由: Chrome は 3 秒後に最初のリクエストをキャンセルし、同じ URL を再度リクエストします。
シーケンスは常に同じです。
- 要求された URL
- 3秒切れたらキャンセル
- http スキームによる自動リロード
- サーバーのHSTSによる307
- URL が https で再度リクエストされました
- これは正しくロードされます
キャンセルされたリクエストは、[タイミング] タブで [停止] として表示されます。
これはChromeでのみ発生しています(私にとっては92.0.4515.107)。この動作は Firefox では見られません。
では、この魔術をどのように再現できるでしょうか。簡単です。2 つの異なるプロバイダー (GCE と OVH) の 2 つの異なるサーバーで再現でき、この URL への最初のリクエストの期間に奇妙なリンクがあります。
Web サーバーに新しい php スクリプトを作成し、
<?php sleep(10); echo 'Done'; ?>
Chrome でスクリプト URL を呼び出す
最初の呼び出しは成功します
しかし、次のすべての呼び出しは確かに「シーケンス」をトリガーします
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 ログに拡張機能の介入についての言及はありません。