برمجة

استئناف تنزيل HTTP باستخدام If-Range عند تغيّر الملف

فريق فايندو جروب2 دقائق قراءة0 مشاهدة0 تعليقات
مشاركة:
واجهة تنزيل توضح مساري الاستجابة الجزئية 206 والاستجابة الكاملة 200

يتوقف تنزيل تقرير افتراضي في منتصفه، ثم يستبدل الخادم التقرير بملف أحدث يحمل الاسم نفسه. إذا ألحق العميل بقية الملف الجديد ببيانات النسخة السابقة، قد يحصل المستخدم على ملف تالف رغم اكتمال شريط التنزيل. يحتاج الاستئناف إلى ربط الجزء المحفوظ بنسخة محددة.

احفظ هوية النسخة مع الجزء المحلي

احتفظ بعدد البايتات المكتملة ووسم ETag قوي للتمثيل الذي وصل. عند الاستئناف أرسل Range لبدء الجزء التالي مع If-Range يحمل ذلك الوسم. يوضح معيار HTTP أن عدم المطابقة يؤدي إلى تجاهل Range. اختبر مع خادم يدعم النطاقات، ولا تستخدم وسمًا ضعيفًا في هذا الشرط.

اقرأ الاستجابة قبل الإلحاق

إذا عاد 206، تحقق من أن Content-Range يبدأ عند العدد المحلي المتوقع وأن بيانات الاستجابة تتفق مع التمثيل المطلوب. إذا عاد 200 لملف كامل، افتح ملفًا مؤقتًا جديدًا بدل الكتابة فوق الجزء السابق مباشرة أو إلحاق الجسم به. يمكن أن يتجاهل خادم Range لأسباب أخرى أيضًا، لذا اجعل قرار التخزين مبنيًا على الاستجابة.

اختبر النسخة الثابتة والنسخة البديلة

ابدأ بملفين مختلفين من بيانات مصطنعة. أنزل جزءًا من الأول ثم استأنفه دون تغييره وقارن بصمة الملف النهائي بالأصل. أعد التجربة بعد استبدال الملف الثاني على الرابط نفسه، وتحقق أن العميل بدأ نسخة كاملة جديدة. جرّب انقطاعًا آخر أثناء الاستجابة الكاملة واحفظ نقطة استئناف مرتبطة بوسمها الجديد.

افحص المسار الكامل للتنزيل

كرر من خلال التخزين والوسيط وبيئة المتصفح التي يستخدمها العميل. راجع إذن الوصول بعد انتهاء الجلسة، واستجابة نطاق غير صالح، وسلوك إعادة التوجيه. اجعل دليل القبول هو تطابق البصمة وحالة الملف المحلي، لأن نسبة التنزيل المعروضة قد تصل إلى النهاية رغم فساد ترتيب البايتات.

يمكن تطبيق الاختبارات ضمن تطوير المواقع والمتاجر والصيانة التقنية.

المرجع الفني RFC 9110 If-Range.

صورة توضيحية أصلية مرتبطة بالمثال.

التصنيفات:برمجة
شارك:

التعليقات

لا توجد تعليقات بعد

أضف تعليقك

كن أول من يعلق على هذا المقال

02 · تابع القراءة

مقالات ذات صلة