Ein Tool zum Beschleunigen des Herunterladens großer Mengen kleiner Dateien
Dieses Projekt stammt aus einem Spiel, das ich zuvor gespielt habe. Es gab jedoch keine Optimierung, daher war die Geschwindigkeit sehr langsam. Daher habe ich darüber nachgedacht, ob es eine Möglichkeit zur Optimierung gibt Das Download-Szenario einer großen Anzahl kleiner Dateien kam mir auf die Idee, sie alle in einer großen Datei zusammenzufassen, da die Download-Geschwindigkeit langsam ist , kann die Download-Geschwindigkeit großer Dateien theoretisch die volle Bandbreite erreichen!
Das Prinzip des Projekts besteht darin, eine große Anzahl kleiner Dateien direkt zu einer Blockdatei zu verknüpfen und dann einen Katalog zu generieren. Der Client lädt die Blockdatei über den Katalog herunter und stellt die Datei basierend auf der Dateigröße und dem Pfad wieder her Aufgrund der Eigenschaften des HTTP Range
kann es auch zu Unterbrechungen kommen, um die Verbindung wiederherzustellen und eine Dateifunktion herunterzuladen
Gehen Sie zu „Releases“, um die neuesten Client- und Server-Binär-Builds herunterzuladen
Stellen Sie den Server bereit
Platzieren Sie die Binärdatei in einem beliebigen Verzeichnis und erstellen Sie einen assets
-Ordner im selben Verzeichnis
Platzieren Sie die kleinen Dateien, die schneller heruntergeladen werden müssen, in einem beliebigen Ordner im assets
-Ordner, z. B. assets/example
Starten Sie den Server. Wenn der Server startet, erstellt er automatisch Verpackungsdateien für alle Unterordner im assets
-Verzeichnis und erstellt für sie catalog.json
.
Der Server fordert Sie auf, Server started at http://0.0.0.0:8080
was bedeutet, dass der Startvorgang abgeschlossen ist.
Laden Sie Dateien über den Client herunter
Platzieren Sie Binärdateien in einem beliebigen Verzeichnis
Geben Sie client <CatalogAddr>
ein, um mit dem Herunterladen der Datei zu beginnen. <CatalogAddr>
ist die Download-Adresse von catalog.json
, die beim Starten des Servers automatisch generiert wird. Gehen Sie davon aus, dass Ihr Serverdateipfad assets/example
lautet, dann lautet die Katalogadresse http://localhost:8080/example/catalog.json
Heruntergeladene Dateien werden automatisch im download
-Ordner gespeichert
Build erfordert Golang >= 1.22.2
Abhängigkeiten installieren
Gehen Sie aufgeräumt
Erstellen Sie den Server
Gehe zu build ./cmd/server/
Client erstellen
Gehe zu build ./cmd/client/
Paket importieren
go get -u github.com/nijinekoyo/miyako
Packungsanleitung
Packung/Katalog
Wird zum Erstellen und Analysieren von Katalogen verwendet. Weitere Informationen finden Sie in der API-Dokumentation
Packung/Block
Wird zum Generieren von Dateiblöcken und zum Herunterladen von Dateiblöcken verwendet. Weitere Informationen finden Sie in der API-Dokumentation
Dieses Projekt wird unter der MIT License
vertrieben