Una herramienta para acelerar la descarga de grandes cantidades de archivos pequeños
Este proyecto se originó a partir de un juego que jugué antes. Descargaba una gran cantidad de archivos pequeños al actualizar la versión. Sin embargo, no había optimización, por lo que la velocidad era muy lenta. Por lo tanto, pensé si había una manera de optimizarlo. Escenario de descarga de una gran cantidad de archivos pequeños. Después de una idea simple, se me ocurrió esta idea. Dado que la velocidad de descarga es lenta porque hay demasiados archivos pequeños, simplemente colóquelos todos en un archivo grande. , ¡la velocidad de descarga de archivos grandes puede, en teoría, alcanzar el ancho de banda completo!
El principio del proyecto es vincular directamente una gran cantidad de archivos pequeños en un archivo de bloque y luego generar un catálogo. El cliente descarga el archivo de bloque a través del catálogo y restaura el archivo localmente según el tamaño y la ruta del archivo. Las características de HTTP Range
también pueden lograr la función de interrupción. Haga clic para volver a conectarse y descargar un archivo.
Vaya a Versiones para descargar las últimas compilaciones binarias de cliente y servidor.
Implementar el servidor
Coloque el archivo binario en cualquier directorio y cree una carpeta assets
en el mismo directorio
Coloque los archivos pequeños que deben descargarse más rápido en cualquier carpeta dentro de la carpeta assets
, como assets/example
Inicie el servidor. Cuando se inicie el servidor, creará automáticamente archivos de empaquetado para todas las subcarpetas en el directorio assets
y creará catalog.json
para ellos.
El servidor indica que Server started at http://0.0.0.0:8080
lo que significa que el inicio está completo.
Descargar archivos a través del cliente
Coloque archivos binarios en cualquier directorio
Ingrese client <CatalogAddr>
para comenzar a descargar el archivo. <CatalogAddr>
es la dirección de descarga de catalog.json
, que se generará automáticamente cuando se inicie el servidor. Suponga que la ruta del archivo de su servidor es assets/example
, luego la dirección del catálogo es http://localhost:8080/example/catalog.json
Los archivos descargados se guardarán automáticamente en la carpeta download
.
La compilación requiere Golang >= 1.22.2
Instalar dependencias
ir mod ordenado
construir el servidor
vaya a compilar ./cmd/server/
Construir cliente
vaya a compilar ./cmd/client/
Paquete de importación
go get -u github.com/nijinekoyo/miyako
Instrucciones del paquete
paquete/catálogo
Se utiliza para crear y analizar catálogos; consulte la documentación de la API.
paquete/bloque
Se utiliza para generar bloques de archivos y descargar bloques de archivos; consulte la documentación de la API
Este proyecto se distribuye bajo el acuerdo MIT License