Почему мой веб-браузер иногда не отображает оставшиеся времена загрузки?

Оглавление:

Почему мой веб-браузер иногда не отображает оставшиеся времена загрузки?
Почему мой веб-браузер иногда не отображает оставшиеся времена загрузки?

Видео: Почему мой веб-браузер иногда не отображает оставшиеся времена загрузки?

Видео: Почему мой веб-браузер иногда не отображает оставшиеся времена загрузки?
Видео: Полное руководство по Google Forms - универсальный инструмент для опросов и сбора данных онлайн! - YouTube 2024, Апрель
Anonim
Иногда верный сканер хода загрузки в вашем браузере (или другом приложении) просто бросает руки в воздух и отказывается от отображения оставшегося времени загрузки. Почему это иногда прибивает запрограммированное время загрузки и иногда не сообщает об этом все вместе?
Иногда верный сканер хода загрузки в вашем браузере (или другом приложении) просто бросает руки в воздух и отказывается от отображения оставшегося времени загрузки. Почему это иногда прибивает запрограммированное время загрузки и иногда не сообщает об этом все вместе?

Сегодняшняя сессия вопросов и ответов приходит к нам благодаря SuperUser - подразделению Stack Exchange, основанной на сообществах сайтам Q & A.

Вопрос

SuperUser reader Coldblackice хочет знать, почему его браузер не всегда тает грязь:

Occasionally, when downloading a file in a web browser, the download progress doesn’t “know” the total size of the file, or how far along in the download it is - it just shows the speed at which it’s downloading, with a total as “Unknown”.

Why wouldn’t the browser know the final size of some files? Where does it get this information in the first place?

Где действительно?

Ответы

Докладчик SuperUser Gronostaj предлагает следующее понимание:

To request documents from web servers, browsers use the HTTP protocol. You may know that name from your address bar (it may be hidden now, but when you click the address bar, copy the URL and paste it in some text editor, you’ll see

https://

в начале). Это простой текстовый протокол, и он работает следующим образом:

Во-первых, ваш браузер подключается к серверу веб-сайта и отправляет URL-адрес документа, который он хочет загрузить (веб-страницы также являются документами), а также некоторые сведения о самом браузере (User-Agent и т. Д.). Например, чтобы загрузить основную страницу на сайте SuperUser,

https://superuser.com/

мой браузер отправляет запрос, который выглядит так:

GET / HTTP/1.1 Host: superuser.com Connection: keep-alive Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 User-Agent: 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: [removed for security] DNT: 1 If-Modified-Since: Tue, 09 Jul 2013 07:14:17 GMT

В первой строке указывается, какой документ должен вернуть сервер. Другие строки называются заголовками; они выглядят так:

Header name: Header value

Эти строки отправляют дополнительную информацию, которая помогает серверу решить, что делать.

Если все будет хорошо, сервер ответит, отправив запрошенный документ. Ответ начинается с сообщения о статусе, за которым следуют некоторые заголовки (с подробностями о документе) и, наконец, если все хорошо, содержимое документа. Это то, что ответ сервера SuperUser для моего запроса выглядит так:

HTTP/1.1 200 OK Cache-Control: public, max-age=60 Content-Type: text/html; charset=utf-8 Expires: Tue, 09 Jul 2013 07:27:20 GMT Last-Modified: Tue, 09 Jul 2013 07:26:20 GMT Vary: * X-Frame-Options: SAMEORIGIN Date: Tue, 09 Jul 2013 07:26:19 GMT Content-Length: 139672 […snip…]

После последней строки сервер SuperUser закрывает соединение.

Первая строка (

HTTP/1.1 200 OK

) содержит код ответа, в этом случае

200 OK

Это означает, что сервер будет возвращать документ по запросу. Когда серверу этого не удается, код будет чем-то другим: вы, вероятно, видели

404 Not Found

а также

403 Forbidden

также довольно распространен. Затем следуют заголовки.

Когда браузер находит пустую строку в ответе, он знает, что все прошлое этой строки - это содержимое запрашиваемого документа. Итак, в этом случае

это первая строка кода домашней страницы SuperUser. Если бы я запрашивал документ для загрузки, это были бы, вероятно, некоторые лирические символы, потому что большинство форматов документов не читаются без предварительной обработки.

Вернуться к заголовкам. Самый интересный для нас - последний,

Content-Length

Он сообщает браузеру, сколько байтов данных он должен ожидать после пустой строки, поэтому в основном это размер документа, выраженный в байтах. Этот заголовок не является обязательным и может быть опущен сервером. Иногда размер документа не может быть предсказан (например, когда документ генерируется «на лету»), иногда ленивые программисты не включают его (довольно часто на сайтах загрузки драйверов), иногда сайты создаются новичками, которые не знают такого заголовка.

В любом случае, какова бы ни была причина, заголовок может отсутствовать. В этом случае браузер не знает, сколько данных сервер собирается отправить, и, таким образом, отображает размер документа какнеизвестный, ожидая завершения соединения с сервером. И в этом причина неизвестных размеров документа.

Есть что добавить к объяснению? Звучит в комментариях. Хотите узнать больше ответов от других пользователей Windows? Посмотрите здесь полную дискуссионную тему.

Рекомендуемые: