เครื่องมือเพื่อเพิ่มความเร็วในการดาวน์โหลดไฟล์ขนาดเล็กจำนวนมาก
โปรเจ็กต์นี้มาจากเกมที่ฉันเล่นมาก่อน มันจะดาวน์โหลดไฟล์ขนาดเล็กจำนวนมากเมื่ออัปเดตเวอร์ชัน อย่างไรก็ตาม ไม่มีการเพิ่มประสิทธิภาพ ดังนั้นความเร็วจึงช้ามาก ดังนั้นฉันจึงคิดว่าจะมีวิธีเพิ่มประสิทธิภาพหรือไม่ สถานการณ์การดาวน์โหลดไฟล์ขนาดเล็กจำนวนมาก หลังจากมีแนวคิดง่ายๆ ฉันก็เกิดแนวคิดนี้ขึ้น เนื่องจากความเร็วในการดาวน์โหลดช้าเนื่องจากมีไฟล์ขนาดเล็กมากเกินไป จากนั้นจึงรวมไฟล์ทั้งหมดไว้ในไฟล์ขนาดใหญ่เพียงไฟล์เดียว ความเร็วในการดาวน์โหลดไฟล์ขนาดใหญ่ในทางทฤษฎีสามารถเข้าถึงแบนด์วิดธ์เต็มได้!
หลักการของโปรเจ็กต์คือการเชื่อมโยงไฟล์ขนาดเล็กจำนวนมากเข้ากับไฟล์บล็อกโดยตรง จากนั้นจึงสร้างแค็ตตาล็อกไฟล์ผ่านแค็ตตาล็อกและกู้คืนไฟล์ในเครื่องตามขนาดไฟล์และเส้นทาง ลักษณะของ HTTP Range
ก็สามารถเกิดการหยุดชะงักได้ คลิกเพื่อเชื่อมต่อใหม่และดาวน์โหลดไฟล์ฟังก์ชัน
ไปที่ Releases เพื่อดาวน์โหลดบิลด์ไคลเอนต์และเซิร์ฟเวอร์ล่าสุด
ปรับใช้เซิร์ฟเวอร์
วางไฟล์ไบนารี่ในไดเร็กทอรีใดก็ได้และสร้างโฟลเดอร์ 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/
สร้างไคลเอนต์
ไป build ./cmd/client/
แพ็คเกจนำเข้า
go get -u github.com/nijinekoyo/miyako
คำแนะนำแพ็คเกจ
pkg/แค็ตตาล็อก
ใช้เพื่อสร้างและแยกวิเคราะห์แคตตาล็อก โปรดดูเอกสารประกอบ API
จำนวนแพ็ค/บล็อก
ใช้เพื่อสร้างบล็อกไฟล์และบล็อกไฟล์ดาวน์โหลด โปรดดูเอกสารประกอบ API
โครงการนี้เผยแพร่ภายใต้ข้อตกลง MIT License