Webブラウザで残りのダウンロード時間が表示されないことがあるのはなぜですか?
時々あなたのブラウザ(または他のアプリケーション)の忠実なダウンロード進行状況メーターは空中に手を投げて残りのダウンロード時間を表示するのをあきらめます。なぜそれは時々予想されたダウンロード時間を釘付けにし、そして時々一緒にそれを報告し損ねるのですか??
本日の質疑応答セッションは、コミュニティ主導のQ&A Webサイトのグループである、Stack Exchangeの下位区分であるSuperUserの好意により提供されます。.
質問
SuperUserの読者であるColdblackiceは、彼のブラウザがいつも汚れを食い物にするとは限らない理由を知りたがっています。
時折、Webブラウザでファイルをダウンロードするとき、ダウンロードの進行状況はファイルの合計サイズ、またはダウンロードがどれくらい進んでいるかを「知らない」 - それは単にそれがダウンロードしている速度を示し、合計で「不明」として.
ブラウザがいくつかのファイルの最終サイズを知らないのはなぜでしょうか。そもそもどこでそれはこの情報を手に入れますか?
本当にどこで?
回答
SuperUserの寄稿者Gronostajは以下の洞察を提供します。
Webサーバーからドキュメントを要求するために、ブラウザはHTTPプロトコルを使用します。あなたはあなたのアドレスバーからその名前を知っているかもしれません(それは今隠されているかもしれません、しかしあなたがアドレスバーをクリックするとき、URLをコピーしそして何らかのテキストエディタにそれを貼り付けると、あなたは見るでしょう
http://
初めに)。これは単純なテキストベースのプロトコルであり、次のように機能します。まず、あなたのブラウザはウェブサイトのサーバに接続し、ダウンロードしたいドキュメントのURL(ウェブページもドキュメントです)とブラウザ自身に関する詳細(User-Agentなど)を送信します。たとえば、SuperUserサイトのメインページを読み込むには,
http://superuser.com/
, 私のブラウザはこのようなリクエストを送ります。GET / HTTP / 1.1ホスト:superuser.com接続:キープアライブ受け入れ:text / html、application / xhtml + xml、application / xml; q = 0.9、* / *; q = 0.8ユーザーエージェント:Mozilla / 5.0( Windows NT 6.1; WOW64)Accept-Encoding:gzip、deflate、sdch Accept-Language:pl-PL、pl; q = 0.8、en-US; q = 0.6、en; q = 0.4 Cookie:[セキュリティ上の理由から削除] DNT :1 If-Modified-since:火、2013年7月9日07:14:17 GMT
最初の行はサーバーがどの文書を返すべきかを指定します。他の行はヘッダと呼ばれます。彼らはこのように見えます:
ヘッダ名:ヘッダ値
これらの行は、サーバーが何をすべきかを決定するのに役立つ追加情報を送信します.
すべて問題なければ、サーバーは要求された文書を送信して応答します。応答はステータスメッセージから始まり、その後にいくつかのヘッダ(ドキュメントに関する詳細を含む)が続き、最後に、ドキュメントの内容がすべてうまくいっていればそれが続きます。これが私の要求に対するSuperUserサーバーの返事はこんな感じです:
HTTP / 1.1 200 OKキャッシュコントロール:public、最大年齢= 60コンテンツタイプ:text / html。 charset = utf-8有効期限:2013年7月9日火曜日07:27:20 GMT最終更新日:2013年7月9日火曜日07:26:20 GMT変更:* X-Frame-Options:SAMEORIGIN日付:火曜日、2013年7月9日07:26:19 GMTコンテンツの長さ:139672 […snip…]
最後の行の後、SuperUserのサーバーは接続を閉じます.
最初の行(
HTTP / 1.1 200 OK
)レスポンスコードを含みます。200 OK
. これは、要求に応じてサーバーがドキュメントを返すことを意味します。サーバーがうまく行かなかった場合、コードは他のものになるでしょう。404お探しのページが見つかりませんでした
, そして403禁止します
とても一般的です。それからヘッダーは続きます.ブラウザが応答の中に空の行を見つけると、その行以降のすべてが要求した文書の内容であることがわかります。だからこの場合
SuperUserのホームページコードの最初の行です。ドキュメントをダウンロードするように要求している場合、ほとんどのドキュメント形式は事前処理なしでは判読できないため、おそらくちょっと文字化けしている可能性があります。.
ヘッダーに戻る私たちにとって最も興味深いのは最後のものです,
コンテンツ長
. これはブラウザに空行の後に何バイトのデータを期待すべきかを知らせるので、基本的にはそれはバイトで表現された文書サイズです。このヘッダーは必須ではなく、サーバーによって省略されることがあります。時々文書サイズが予測できない時(例えば文書がその場で生成された時)、時々怠惰なプログラマーはそれを含まない(ドライバーダウンロードサイトではかなり一般的です)、時々ウェブサイトは知らない初心者によって作成されますそのようなヘッダーの.とにかく、理由が何であれ、ヘッダーがなくなっている可能性があります。その場合、ブラウザはサーバが送信しようとしているデータ量を知らないため、ドキュメントサイズを次のように表示します。 道の, サーバーが接続を閉じるのを待っています。そしてそれが未知の文書サイズの理由です.
説明に追加するものがありますか?コメントの中で消してください。他の技術に精通したStack Exchangeユーザーからの回答をもっと読みたいですか?こちらのディスカッションスレッドをチェックしてください。.