В чем разница между файлами, загрузка которых может быть приостановлена, и файлами, загрузка которых не может быть приостановлена?

В чем разница между файлами, загрузка которых может быть приостановлена, и файлами, загрузка которых не может быть приостановлена?

Технически, в чем разница между способом размещения (на сервере)

  • файл, загрузка которого может быть приостановлена ​​и возобновлена ​​снова, и
  • файл, который нужно скачать за один раз?

решение1

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

Более подробную информацию вы можете получить, прочитав этоАпачидокумент и соответствующие RFC. Из документа по ссылке - пример ответа.

HTTP/1.1 206 Partial Content
Date: Wed, 15 Nov 1995 06:25:24 GMT
Last-Modified: Wed, 15 Nov 1995 04:58:08 GMT
Content-type: multipart/byteranges; boundary=THIS_STRING_SEPARATES

--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 500-999/8000

...the first range...
--THIS_STRING_SEPARATES
Content-type: application/pdf
Content-range: bytes 7000-7999/8000

...the second range
--THIS_STRING_SEPARATES--

решение2

Распространенной является отсутствие заголовка content-sizeили content-range. Возможно, автор забыл установить его в своем скрипте загрузки?

решение3

Загрузка может быть возобновлена, если HTTP-сервер поддерживает запросы на извлечение диапазона, как определено в разделе 14.35Запрос на изменение 2616, который Википедия называет "байтовая подача"по какой-то странной причине.

  1. Сервер отправляет Accept-Ranges: bytesответ на запрос HEADили GET, чтобы указать, что он поддерживает побайтовую передачу.
  2. Клиент отправляет GETзапрос, включающий Range: bytes=aaa-bbb, где начальное смещение составляет aaaбайт после начала файла, а длина диапазона составляет bbb - aaa + 1байт.
  3. Сервер отправляет ответ со статусом 206 (частичное содержимое), включая Content-range: bytes aaa-bbb/cccc, где aaa-bbbкак и прежде, а cccc— это либо длина файла в байтах, либо, *если сервер не может ее определить, за которым следует тело ответа, содержащее запрошенный диапазон байтов. Если диапазон выходит за пределы, сервер вместо этого отправляет ответ со статусом 416 (запрошенный диапазон невыполним).

Некоторые видеоплееры используют запросы диапазона для поддержки поиска по видео. Медиаконтейнер Ogg используетинтерполированный поиск бисекциидля поддержки этого варианта использования.

Популярное программное обеспечение веб-сервера можно настроить для обслуживания диапазонов из статических файлов, но серверный скрипт, который проверяет подлинность загрузки, может или не может самостоятельно обрабатывать диапазоны. (Проверьте руководство по вашему языку сценариев.) Некоторые операторы серверов загрузки, открытых для общественности, намеренно блокируют запросы диапазонов, поскольку несколько менеджеров загрузки использовали поддержку диапазонов контента для выполнения более чем одного запроса к серверу, поглощая ресурсы, которые могли бы использоваться для предоставления загрузок другим пользователям.

Связанный контент