Un outil pour accélérer le téléchargement de grandes quantités de petits fichiers
Ce projet est issu d'un jeu auquel j'ai joué auparavant. Il téléchargeait un grand nombre de petits fichiers lors de la mise à jour de la version. Cependant, il n'y avait pas d'optimisation, donc la vitesse était très lente. J'ai donc réfléchi à l'existence d'un moyen d'optimisation. le scénario de téléchargement d'un grand nombre de petits fichiers. Après une idée simple, j'ai eu cette idée, puisque la vitesse de téléchargement est lente car il y a trop de petits fichiers, puis mettez-les tous dans un seul gros fichier. , la vitesse de téléchargement des fichiers volumineux peut théoriquement atteindre la pleine bande passante !
Le principe du projet est de lier directement un grand nombre de petits fichiers dans un fichier bloc, puis de générer un catalogue. Le client télécharge le fichier bloc via le catalogue et restaure le fichier localement en fonction de la taille et du chemin du fichier. Les caractéristiques de HTTP Range
, il peut également obtenir une interruption Cliquez pour se reconnecter et télécharger une fonction de fichier.
assets
dans le même répertoireassets
, tel que assets/example
assets
et créera catalog.json
pour eux.Server started at http://0.0.0.0:8080
ce qui signifie que le démarrage est terminé.client
pour commencer le téléchargement du fichier.
est l'adresse de téléchargement de catalog.json
, qui sera automatiquement générée au démarrage du serveur. Supposons que le chemin du fichier de votre serveur est assets/example
, alors l'adresse du catalogue est http://localhost:8080/example/catalog.json
download
La construction nécessite Golang >= 1.22.2
go mod tidy
go build ./cmd/server/
go build ./cmd/client/
Importer un package
go get -u github.com/nijinekoyo/miyako
Instructions sur l'emballage
Ce projet est distribué sous le contrat MIT License