ما يزعجني أكثر من انقطاع الإنترنت أثناء تحميل ملف كبير هو الإحساس بأن الوقت ضائع، لذلك طوّرت روتينًا واضحًا أتبعه فورًا. أول شيء أفعله هو عدم إغلاق المتصفح أو التطبيق فورًا: أغلق مؤقتًا التحميل إن أمكن، وأتحقق من وجود ملف جزئي في مجلد التنزيلات (غالبًا اسمه ينتهي بـ .part أو .crdownload). هذا الملف علامة جيدة أن التحميل قابل للاستئناف إذا أعاد السيرفر إرسال رؤوس 'Range'.
بعد التأكد من وجود الملف الجزئي أعاود الاتصال بالإنترنت — أُعيد تشغيل الراوتر لو لزم الأمر، وأتأكد من وجود مساحة تخزين كافية. إذا كان السيرفر يدعم الاستئناف أستخدم زر 'Resume' في المتصفح أو التحميل سيكمل تلقائيًا. أما إن لم يشتغل، فأنتقل إلى مدير تحميل مثل 'IDM' أو 'aria2' أو 'wget -c' لأنهم يتعاملون مع الاستئناف أفضل، ويستطيعون استبدال الطلب بنفس الرابط ونفس الملف الجزئي.
نصيحة مهمة تعلمتها: إن كان الملف كبيرًا جداً وعاود الفشل مرات، أفضّل استخدام بروتوكول يمكنه الاستئناف بشكل متكرر مثل التورنت أو استخدام خدمة سحابية موثوقة. وفي النهاية أتحقق من صحة الملف بالمقارنة عبر checksum لو كان ذلك ممكنًا — هذا يوفر عليّ إعادة تحميل غير ضرورية.
لا شيء أكثر إزعاجًا من أن يتوقف تحميل ملف كبير عند 99% ثم تتساءل إن كان سيُستأنف أم لا. أنا جربت هذا السيناريو عدة مرات وفهمت الفكرة الأساسية: نعم، معظم برامج التورنت تسمح باستئناف التحميل بعد الانقطاع، لكن هناك شروط تُحدّد نجاح الاستئناف.
التورنت يقسم الملف إلى قطع (pieces)، وكل برنامج يحتفظ بسجل ما تم تنزيله من تلك القطع ولو بشكل مؤقت داخل ملفات مؤقتة أو ملف خاص بالإعدادات. إذا بقيت هذه القطع على القرص بنفس المكان والاسم، فبإمكان البرنامج استئناف من حيث توقف، عادة بعد فحص سريع للتأكد من سلامة القطع. عند استئناف قد تحتاج إلى إعادة الاتصال بالأقران (peers) أو بالمُتعقّب (tracker) أو الاعتماد على DHT/PEX للحصول على من يُرسل بقية القطع.
مع ذلك، هناك عقبات: إذا حُذفت الملفات المؤقتة أو تغيّر اسم المجلد أو انتقلنا بالتحميل إلى جهاز آخر بدون نقل البيانات بشكل صحيح، فستفشل عملية الاستئناف ما لم تقم بـ'فورس ريتشيك' (force re-check) أو إعادة ردمج الملفات. والمشكلة الأخرى هي أن صحة السوار (عدد الأقران والبذّاعين) تؤثر؛ حتى لو كان كل شيء محفوظًا، قد لا تجد من يكمل التحميل. في المجمل، الاستئناف ممكن وعملي، لكنه يعتمد على الحالة الفنية لملفاتك وصحة الشبكة حول الملف.
في موقف طريف حصل معي أثناء تنزيل لعبة كبيرة، اكتشفت أن استئناف التنزيل يعتمد على أكثر من مجرد زر 'استئناف' في البرنامج.
أحيانًا أنقطع الإنترنت أو أغلق الجهاز عن غير قصد، فأفتح مدير التحميل متأملاً أن يكمل التحميل من حيث توقّف. الفكرة الأساسية هي أن الخادم الذي يأتي منه الملف يجب أن يدعم ما يُسمّى بـ'نطاقات' البيانات (Range requests) حتى يقبل أن يرسل لي الجزء المتبقّي فقط. إذا كان الخادم يرد برمز 206 أو يعلن في الهيدر 'Accept-Ranges: bytes' فهذا يعني عادةً أن الاستئناف ممكن. كذلك بروتوكولات مثل FTP أو بروتوكول التورنت مصممة للاستئناف، لذلك النتيجة جيدة هناك.
لكن هناك حالات محبطة: روابط مؤقتة أو ملف تغيّر على الخادم أو خادم لا يدعم النطاقات تجبرني على إعادة التحميل من البداية. أنا الآن أعتمد عادةً على مدراء تحميل يدعمون التقسيم والتحقق من القطع، لأنهم يزيدون فرص الاستئناف ويقصرون وقت الانتظار لو حدث انقطاع مفاجئ.
تعلمت من تجاربي أن فشل استئناف التحميل له أسباب تقنية ونفسية (يعني، متعلقة بخادم أو بإعدادات البرنامج)، وأكثرها شيوعًا قد لا يكون واضحًا على الفور.
أحيانًا يكون السبب أن الخادم الذي تنزل منه لا يدعم طلبات النطاقات (HTTP Range requests)، وبالتالي عندما يرسل مدير التنزيل رأسًا لاستئناف من بايت معين يأتيه رد 200 بدل 206، فيُعامل الملف كتحميل جديد وتضيع نقطة الاستئناف. وأسباب أخرى تشمل انتهاء صلاحية رابط مؤقت أو توكن المصادقة، أو تغيّر اسم الملف أو موضعه على الخادم، أو أن ملف الجزئي المؤقت (.part) تالف أو مقفل بواسطة برنامج مضاد للفيروسات.
لإصلاح المشكلة أتحقّق من سجلات مدير التنزيل أولًا، أفرّغ ذاكرة التخزين المؤقت للتطبيق، وأتأكد من أن الرابط لا يحتوي على توقيع منتهي الصلاحية. إذا استمر الفشل، أُعيد طلب الرابط عبر المتصفح أو أستخدم أدوات مثل curl/wget لمعرفة ما إذا كان الخادم يرد بـ'Accept-Ranges' و'Content-Range'. وأحيانًا أسهل حل هو إعادة تحميل الملف من جديد أو التحويل إلى بروتوكول يدعم الاستئناف أفضل (مثل FTP أو تورنت)؛ لكن دائمًا أتأكد من وجود مساحة على القرص وأن مضاد الفيروسات لا يعيق الملف قبل أن أفقد الوقت كاملًا.