Есть ли какие-либо решения/утилиты для одновременного сжатия и загрузки большого файла?

Есть ли какие-либо решения/утилиты для одновременного сжатия и загрузки большого файла?

Загрузка большого файла через широкополосное соединение занимает время. Сжатие файла с использованием максимальной степени сжатия перед загрузкой также занимает время.

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

Например, сжатие файла занимает 5 минут, а загрузка сжатого файла занимает 10 минут. Он выполняет сжатие, а затем задачу загрузки, это занимает около 15 минут.

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

решение1

Это зависит от протокола, который вы используете для передачи файлов. Обычно это уже делается прозрачно.

Протокол HTTP (и HTTPS) поддерживает сжатие на лету, при условии, что и сервер, и клиент реализуют его. Прежде всего, клиент сообщит серверу, какой тип сжатия он поддерживает. Типичный заголовок HTTP-запроса включает строку типа

Accept-Encoding: gzip, deflate

Сервер выберет поддерживаемый им алгоритм сжатия, укажет его в заголовке HTTP (как показано ниже) и предоставит сжатое содержимое.

Content-Encoding: gzip

Большинство современных HTTP-клиентов (например, Chrome, Firefox, Internet Explorer, Safari и т. д. в алфавитном порядке) и серверов (например, Apache, Microsoft IIS, nginx) при правильной настройке передают данные, сжимая их «на лету».

Аналогично другие протоколы могут реализовывать сжатие, например, Mode Z в FTP. Специализированные протоколы, такие как Remote Differential Compression от Microsoft, позволяют синхронизировать локальные и удаленные файлы, передавая только другую часть.


РЕДАКТИРОВАТЬ:

Я обнаружил, что прозрачное сжатие HTTP предназначено только для загрузки файлов, но не наоборот. Если вы хотите сжать данные для загрузки, вам может потребоваться написать немного Javascript и использовать FileReaderбиблиотеку сжатия, например compressjs.

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