Инструмент для ускорения загрузки больших объемов небольших файлов.
Этот проект возник из игры, в которую я играл раньше. При обновлении версии загружалось большое количество мелких файлов. Однако оптимизации не было, поэтому скорость была очень низкой. Поэтому я подумал, есть ли способ оптимизировать. сценарий загрузки большого количества маленьких файлов.После простой идеи мне пришла в голову такая идея, так как скорость загрузки низкая из-за слишком большого количества маленьких файлов, то просто поместите их все в один большой файл. , скорость загрузки больших файлов теоретически может достигать полной пропускной способности!
Принцип проекта заключается в том, чтобы напрямую связать большое количество небольших файлов в файл блока, а затем создать каталог. Клиент загружает файл блока через каталог и восстанавливает файл локально на основе размера файла и пути. характеристики HTTP Range
, он также может добиться прерывания. Нажмите, чтобы повторно подключиться и загрузить функцию файла.
Перейдите в раздел «Релизы», чтобы загрузить последние двоичные сборки клиента и сервера.
Развертывание сервера
Поместите двоичный файл в любой каталог и создайте папку assets
в том же каталоге.
Поместите небольшие файлы, которые необходимо загрузить быстрее, в любую папку внутри папки assets
, например assets/example
Запустите сервер. Когда сервер запустится, он автоматически создаст файлы упаковки для всех подпапок в каталоге assets
и создаст для них catalog.json
.
Сервер предложит Server started at http://0.0.0.0:8080
что означает, что запуск завершен.
Загрузка файлов через клиент
Поместите двоичные файлы в любой каталог
Введите client <CatalogAddr>
чтобы начать загрузку файла. <CatalogAddr>
— это адрес загрузки catalog.json
, который будет автоматически сгенерирован при запуске сервера. Предположим, что путь к файлу вашего сервера — assets/example
, тогда адрес каталога — http://localhost:8080/example/catalog.json
Загруженные файлы будут автоматически сохраняться в папке download
Для сборки требуется Golang >= 1.22.2.
Установить зависимости
иди мод, аккуратно
Сборка сервера
идите строить ./cmd/server/
Создать клиент
идите строить ./cmd/client/
Импортировать пакет
go get -u github.com/nijinekoyo/miyako
Инструкции по упаковке
упаковка/каталог
Используется для создания и анализа каталогов, см. документацию API.
упаковка/блок
Используется для создания блоков файлов и загрузки блоков файлов. См. документацию API.
Этот проект распространяется по MIT License