أداة لتسريع تنزيل كميات كبيرة من الملفات الصغيرة
نشأ هذا المشروع من لعبة لعبتها من قبل، وكان يقوم بتنزيل عدد كبير من الملفات الصغيرة عند تحديث الإصدار، ومع ذلك، لم يكن هناك تحسين، لذلك كانت السرعة بطيئة جدًا سيناريو التنزيل لعدد كبير من الملفات الصغيرة. بعد فكرة بسيطة، توصلت إلى هذه الفكرة، نظرًا لأن سرعة التنزيل بطيئة بسبب وجود عدد كبير جدًا من الملفات الصغيرة، فما عليك سوى وضعها جميعًا في ملف واحد كبير ، يمكن نظريًا أن تصل سرعة تنزيل الملفات الكبيرة إلى النطاق الترددي الكامل!
مبدأ المشروع هو ربط عدد كبير من الملفات الصغيرة مباشرة في ملف كتلة، ثم إنشاء كتالوج، يقوم العميل بتنزيل ملف الكتلة من خلال الكتالوج واستعادة الملف محليًا بناءً على حجم الملف ومساره خصائص HTTP Range
، يمكنها أيضًا تحقيق الانقطاع لإعادة الاتصال وتنزيل وظيفة الملف
انتقل إلى الإصدارات لتنزيل أحدث الإصدارات الثنائية للعميل والخادم
نشر الخادم
ضع الملف الثنائي في أي دليل وقم بإنشاء مجلد 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/
بناء العميل
اذهب للبناء ./cmd/client/
حزمة الاستيراد
go get -u github.com/nijinekoyo/miyako
تعليمات الحزمة
الحزمة/الكتالوج
يستخدم لإنشاء وتحليل الكتالوجات، يرجى مراجعة وثائق API
حزمة كجم/كتلة
يستخدم لإنشاء كتل الملفات وتنزيل كتل الملفات، يرجى الاطلاع على وثائق API
يتم توزيع هذا المشروع بموجب اتفاقية MIT License