Uma ferramenta para acelerar o download de grandes quantidades de arquivos pequenos
Este projeto originou-se de um jogo que joguei antes. Ele baixava um grande número de arquivos pequenos ao atualizar a versão, porém não havia otimização, então a velocidade era muito lenta. o cenário de download de um grande número de arquivos pequenos Depois de uma ideia simples, tive essa ideia, já que a velocidade de download é lenta porque há muitos arquivos pequenos, basta colocá-los todos em um arquivo grande. , a velocidade de download de arquivos grandes pode, teoricamente, atingir a largura de banda total!
O princípio do projeto é vincular diretamente um grande número de arquivos pequenos em um arquivo de bloco e, em seguida, gerar um catálogo. O cliente baixa o arquivo de bloco por meio do catálogo e restaura o arquivo localmente com base no tamanho e no caminho do arquivo. as características do HTTP Range
, também pode causar interrupção. Clique para reconectar e baixar uma função de arquivo.
Vá para Releases para baixar as versões binárias de cliente e servidor mais recentes
Implantar o servidor
Coloque o arquivo binário em qualquer diretório e crie uma pasta assets
no mesmo diretório
Coloque os arquivos pequenos que precisam ser baixados mais rapidamente em qualquer pasta dentro da pasta assets
, como assets/example
Inicie o servidor. Quando o servidor for iniciado, ele criará automaticamente arquivos de empacotamento para todas as subpastas no diretório assets
e criará catalog.json
para eles.
O servidor solicita Server started at http://0.0.0.0:8080
o que significa que a inicialização foi concluída.
Baixar arquivos via cliente
Coloque arquivos binários em qualquer diretório
Digite client
para iniciar o download do arquivo.
é o endereço de download de catalog.json
, que será gerado automaticamente quando o servidor for iniciado. Suponha que o caminho do arquivo do servidor seja assets/example
, então o endereço do catálogo é http://localhost:8080/example/catalog.json
Os arquivos baixados serão salvos automaticamente na pasta download
A compilação requer Golang >= 1.22.2
Instalar dependências
vá mod arrumado
Construa o servidor
vá construir ./cmd/server/
Construir cliente
vá construir ./cmd/client/
Pacote de importação
go get -u github.com/nijinekoyo/miyako
Instruções do pacote
pacote/catálogo
Usado para criar e analisar catálogos, consulte a documentação da API
pacote/bloco
Usado para gerar blocos de arquivos e baixar blocos de arquivos, consulte a documentação da API
Este projeto é distribuído sob o contrato MIT License