Windows 7 で IE 9 を使用して、78 メガバイトのファイルであるLLVM テスト スイートをダウンロードするテストをいくつか行いました。リンクをクリックすると、ダウンロードが開始されます。Internet Explorer は、確認またはキャンセルを待ちません。IE はバイトを fizzbuz という名前のファイルでダウンロード ディレクトリに保存します。部分的な。IE は、完了時にファイルの名前を変更するか、キャンセルした場合はファイルを削除することで、選択に追いつきます。
タイミングの問題または HTTP の問題である可能性があります。
タイミングの問題
別のプロセスがファイルを開いたり、ロックしたりする可能性はありますか? 熱心すぎるウイルス対策ソフトウェアまたはリアルタイム バックアップ ソフトウェアでしょうか。おそらく、閉じて名前を変更する操作 (サーバーがファイル全体を送信したために実行する必要があります) は、次のようになります。
- 最後の有効なバイトを fizzbuzz に書き込みます。部分ファイル
- ファイルを閉じる
- ファイルの名前を変更する
プロセスが 2 と 3 の間で排他的読み取りのためにファイルを取得するとどうなりますか? おそらく、そのアプリケーションは、IE を混乱させる代替 NTFS ストリームへの書き込みなど、ファイルにいくつかの変更を加えますか?
ブラウザのプラグインにもダウンロードの終了が通知されることに注意してください。別の種類のタイミングの問題は、ダウンロードを監視し、ダウンロードの終了を確認して何らかの操作を行うプラグインによって引き起こされる可能性があります。その操作は失敗するか、場合によっては戻らない可能性があります。
ウイルス対策を実行せずに (ファイルをホワイトリストに登録するよりも優れたテストです)、ブラウザー プラグインを読み込まずに、問題の再現を試みます。
HTTP の問題
サーバーとクライアントは、接続を終了する方法について合意する必要があります。次のいずれかを行う必要があります。
- 転送の最後に接続を閉じる
- ダウンロードの長さを指定する
これを遠くからデバッグするのは困難ですが、可能であれば、ダウンロードのネットワーク トレースをキャプチャし、次の手がかりを探します。
- Content-length ヘッダーが存在しないか、N だけずれている可能性があります (ブラウザーは N バイトが来るのを永遠に待ちます)。
- 各クライアントのプロキシ構成は同じですか?
- 稼働していないクライアントは HTTP 1.0 にダウングレードされていますか? (「常にプロキシ経由で http 1.0 を使用する」という設定があります)
スクリーン ショットから、ブラウザが到着予定時刻を計算できなかったように見えますが、それとダウンロードの間に相関関係はありません。