الفيديو والترجمات · تنزيل الوسائط المباشرة
مدى احتواء تنزيلات الوسائط الكبيرة في ذاكرة المتصفح: التدفقات، وBlobs، والحدود
· كيف يعمل
التنزيلات أداء متصفح
يشير ToolAcre إلى أن الحد الأقصى للحجم هو ذاكرة جهازك وليس الحد الأقصى للتحميل. يشرح هذا المنشور ما يعنيه ذلك بالنسبة للتنزيل المباشر: كيف تتم قراءة نصوص الاستجابة، ومكان وجود وحدات البايت، ومتى تنفد مساحة علامة تبويب المتصفح.
يبلغ حجم الملف عدة غيغابايت ويتوقف التنزيل في منتصف الطريق - المشكلة التي تسببها حدود الذاكرة في التنزيلات من جانب المتصفح
يمكن أن يتقدم التسجيل الطويل بثبات ثم يتوقف لأن الحفظ من جانب المتصفح يحتاج إلى مساحة للأجزاء المستلمة وBlob المكتملة. لا يمكن للنسبة المئوية المتوقفة وحدها تشخيص السبب: يمكن أن تتوقف الشبكة مؤقتًا، أو يمكن للمضيف إغلاق الاتصال، أو يمكن إطلاق الإلغاء، أو يمكن أن تقترب العملية من ضغط الذاكرة.
ToolAcre يجعل أحد الحدود حتمية. `downloadMedia` افتراضيًا بحد أقصى 2 GiB ويرفض طول المحتوى المعلن الأكبر قبل قراءة النص. إذا قام المضيف بحذف هذا الرأس أو التقليل منه، فسيتم فرض نفس الحد مرة أخرى عند وصول القطع، مما يمنع تراكمًا غير محدود. تستحق القيمة المعلنة بالقرب من الحدود الحذر لأن تجميع Blob وحالة الصفحة وحمل التنفيذ قد يتطلب موارد أكثر مما تقترحه حمولة الاستجابة وحدها.
كيفية قراءة نص الاستجابة: أجزاء ReadableStream مقابل مخزن مؤقت واحد كبير - ما يفعله المتصفح أثناء زحف التقدم
يعرض الجلب نص الاستجابة باعتباره ReadableStream عندما يوفر المتصفح واحدًا. يحصل التنفيذ على قارئ، وينتظر القطع، ويحسب كل `Uint8Array`، ويحدث التقدم، ويخزن القطع لبناء Blob النهائي. البث يجعل التقدم والإلغاء حقيقيين؛ لا يجعل التخزين ثابتًا.
عندما يكون طول المحتوى قيمة محددة موجبة، يمكن للواجهة إظهار البايتات المستلمة مقابل الإجمالي. بدونها، تقوم الشاشة بإبلاغ وحدات البايت المستلمة ولكنها ترفض اختراع نسبة مئوية. في حالة عدم وجود نص قابل للقراءة، يعود الكود إلى `response.blob()` ويبلغ بالحجم النهائي فقط. كل قطعة يتم الاحتفاظ بها تجعل التجميع اللاحق ممكنًا، في حين أن التصميم الحقيقي لتدفق القرص سيحتاج إلى متصفح مختلف API، ونموذج الإذن، واستراتيجية الفشل غير موجودة هنا.
أين يعيش Blob المكتمل ولماذا لا يكون هناك وعد بتخزين المتصفح آمنًا
إن Blob المجمع هو كائن متصفح يمثل بايتات غير قابلة للتغيير مع تسمية MIME. لا تضمن المواصفات ما إذا كان متصفح معين سيحتفظ بكل بايت احتياطي في RAM، أو ينسكب بعض البيانات، أو يكرر المخازن المؤقتة أثناء التجميع. لذلك يجب أن تتجنب إرشادات المقالة المطالبة بموقع التخزين العالمي.
ما يثبته التطبيق هو أنه يحتفظ بمراجع القطع حتى انتهاء الدفق، ثم يقوم بإنشاء كائن ثنائي كبير الحجم واحد ويبقيه متاحًا لإجراء الحفظ على جهازك. تتنافس مجموعة العمل هذه مع الصفحة وعلامات التبويب الأخرى، لذا تظل ظروف الجهاز والمتصفح قيودًا عملية تحت السقف الصريح. هذا التمييز هو السبب وراء تسمية الوثائق لضغط الموارد بدلاً من الوعد بمضاعف RAM محدد، أو عتبة انسكاب القرص، أو تقنية التخصيص المعتمدة على المتصفح.
لماذا لا يوجد حد أقصى للتحميل، ولكن هناك 2 GiB حارس التنزيل
لم يتم تحميل أي ملف إلى ToolAcre ولم يستقبل أي ترحيل الوسائط. ينتقل GET من متصفح الزائر إلى المضيف المقدم. يؤدي ذلك إلى إزالة حصة تحميل الخادم، ولكن هذا لا يعني "غير محدود": يفرض المصدر حدًا أقصى قدره 2 غيغابايت ويخبر المهام الأكبر حجمًا باستخدام رابط الحفظ الأصلي بدلاً من ذلك.
يمكن للمضيف الإعلان عن حجم زائد من خلال طول المحتوى، مما يسمح بالرفض المبكر. ويمكنه أيضًا البث بدون طول، وفي هذه الحالة يقوم ToolAcre باحتساب المقاطع الفعلية ويتوقف بعد تجاوز الحد. لا يتم عرض وحدات البايت الجزئية كتنزيل مقطوع بعد هذا الفشل. تغطي عمليات الفحص المبكر والمتدفق الترويسات ذات الطول الصادق والغائب، بينما يتم اكتشاف الترويسة الصغيرة غير الدقيقة فقط عندما يتجاوز الجسم المقاس نفس السقف.
مثال عملي: تسجيل محاضرة طويلة على جهاز كمبيوتر محمول مع RAM محدود - ما يمكن توقعه وكيفية معرفة ضغط الذاكرة من توقف الشبكة
تخيل ملف محاضرة على جهاز كمبيوتر محمول يقوم بالفعل بتشغيل محرر والعديد من علامات التبويب. اضغط أولاً على التحقق من الرابط وقارن الحجم المذكور مع الحارس. أثناء التنزيل، تحديثات البايت الثابتة بدون إجمالي يعني أن المضيف قد حذف طولًا قابلاً للاستخدام؛ قد يُظهر صف الطلب المجمد بدلاً من ذلك توقفًا مؤقتًا للنقل.
يمكن أن يؤثر ضغط الذاكرة على علامة التبويب حتى أثناء بقاء الطلب نشطًا، ولكن لا يمكن لـ ToolAcre فحص نظام التشغيل وإعلان السبب. توفر أدوات مهام المتصفح وطرق عرض ذاكرة النظام والجدول الزمني للطلب أدلة تكميلية. قد تؤدي إعادة المحاولة بشكل أعمى إلى تكرار نفس طلب التخصيص. إذا انتهى الطلب بالحالة HTTP، فتحقق من هذه الاستجابة أولاً؛ لا يعد ضغط الذاكرة تفسيرًا افتراضيًا مفيدًا لكل عملية نقل كبيرة تمت مقاطعتها.
العادات العملية: إغلاق علامات التبويب الأخرى وتنزيل ملف واحد في كل مرة - كيفية منح علامة التبويب المساحة التي تحتاجها
قم بإغلاق علامات التبويب الثقيلة غير ذات الصلة قبل بدء عملية نقل قريبة من الحد الأقصى، واحتفظ بمهمة واحدة كبيرة نشطة في كل مرة، وتجنب مسح النتيجة حتى يبدأ إجراء الحفظ. تقلل هذه العادات من المنافسة ولكنها لا ترفع الحد الأقصى المشفر أو تضمن النجاح على جهاز مقيد.
يكون التحقق أولاً مفيدًا عندما يوفر المضيف طول المحتوى، ومع ذلك فإن القيمة المفقودة تعني "غير معروف"، وليس "صغير". شاهد عداد البايت الخام وقم بالإلغاء إذا لم يكن النقل هو الأصل المتوقع. يؤدي الإلغاء إلى تجاهل الملف الجزئي وتحرير قفل القارئ بدلاً من تقديم وحدات البايت غير المكتملة كنجاح. يؤدي الحفظ الفوري أيضًا إلى تقليل المدة التي تظل فيها كائنات Blob الجاهزة قابلة للوصول في حالة الصفحة، على الرغم من أن JavaScript لا يمكنه أن يعد باللحظة المحددة التي يستعيد فيها المتصفح مساحة التخزين الاحتياطية.
ما لا يغطيه هذا — استئناف التنزيل المعطل، أو تقسيم الملف إلى أجزاء، أو التنزيلات التي تتجاوز ما يمكن للجهاز الاحتفاظ به
لا يُصدر هذا المسار طلبات نطاق، أو يستأنف عملية نقل متقطعة، أو يقسم الإخراج إلى أجزاء، أو يتدفق مباشرة إلى مقبض ملف محدد من قبل المستخدم، أو جدولة قائمة انتظار. على الرغم من أن استجابة HEAD تشير إلى ما إذا كانت نطاقات البايت تبدو مدعومة، فإن أداة التنزيل لا تحول هذه النتيجة الاستشارية إلى سلوك استئناف.
تنتمي الملفات التي تقع خارج نطاق الحماية إلى تنزيل متصفح أصلي، أو عميل سطر أوامر مسموح به، أو سير عمل آخر معتمد يكتب بشكل تدريجي دون الاحتفاظ بالنتيجة بأكملها لحفظ البيانات الثنائية الكبيرة. يتعلق هذا الاختيار بهندسة الذاكرة، وليس الحل البديل لتسجيل الدخول، CORS، DRM، أو قيود الحقوق. قد يكون العميل القابل للاستئناف أكثر ملاءمة للاتصالات غير الموثوقة، ولكن فقط عندما يسمح مصدر الملف والتفويض لذلك العميل بالوصول إلى نفس المورد.
الوجبات الجاهزة: كل من الحماية الصريحة وذاكرة الجهاز المتاحة مهمان
يحتوي بيان الحد الدقيق على طبقتين: ToolAcre يرفض أكثر من 2 GiB افتراضيًا، ولا يزال من الممكن أن تظل عمليات النقل الأصغر مقيدة بالموارد المتاحة للمتصفح. يصف "لا يوجد حد أقصى للتحميل" المرحل الغائب؛ إنه ليس مرادفًا للحجم اللانهائي القابل للتنزيل.
بالنسبة للملفات المناسبة، يوفر قارئ القطعة تقدمًا صادقًا، ويوفر AbortController الإلغاء، ويوفر إنشاء Blob نتيجة قابلة للحفظ. يحتفظ برنامج Direct Media Downloader بالبايتات على المسار المباشر من المضيف إلى المتصفح مع الاعتراف بأن علامة تبويب المتصفح هي مساحة عمل محدودة. يجب تخطيط الحدين معًا قبل بدء النقل، خاصة على أجهزة الكمبيوتر المحمولة المُدارة أو الأجهزة المحمولة حيث يمكن أن تتغير الموارد المتاحة بسرعة.