سؤال

أقوم بتحميل الملفات باستخدام طريقة التحميل () لفئة FileReference. أريد أن أعرض سرعة الاتصال الحالية وكنت أتساءل ما هي طريقة جيدة للقيام بذلك.

تقنيتي الحالية هي استخدام جهاز توقيت كل 1 ميلي الثاني مثل التالي:

var speed:Function = function(event:TimerEvent):void {
    speed = Math.round((currentBytes - lastBytes) / 1024);
    lastBytes = currentBytes;
}
var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

ويتم تعيين CurrentBytes في progressevent.progress. هذه التقنية تبدو غير دقيقة. كنت أتساءل عن الطرق الأخرى التي يمكنني استخدامها لحساب سرعة التحميل أثناء التحميل وعرضها في الوقت الفعلي.

أي أفكار أو آراء موضع ترحيب!

شكرا جزيلا لك،

رودي

هل كانت مفيدة؟

المحلول

إذا كانت كتلة الكود هذه عبارة عن نسخة ولصقها ، فلن تعمل بالتأكيد كما توقعت ذلك. أنت تعلن speed كدالة تظهر فيها لإعادة تعريفها كرقم. إنني أقدر فلاش IDE دعنا نفلت من القواعد النحوية ، لكن كود مثل هذا سيقودك إلى جميع أنواع المتاعب. حاول أن تكون صريحًا عند كتابة التعليمات البرمجية الخاصة بك.

جرب شيئًا كهذا ، استبدال yourLoader مع أي معرف قمت بتعيينه إلى جهاز التحميل:

private var speed:Number = 0;
private var lastBytes:uint = 0;

private function uploadSpeed(event:TimerEvent):void
{
   speed = Math.round((yourLoader.currentBytes - lastBytes) / 1024);
   lastBytes = yourLoader.currentBytes;
}

private var speedTimer:Timer = new Timer(1000);
speedTimer.addEventListener(TimerEvent.TIMER, uploadSpeed);

يجب أن يحسب عدد البايتات التي انتقلت فيها 1 ثانية فترات.

يحرر:

قد ترغب في جعل الفاصل الزمني أصغر قليلاً من 1000 مللي ثانية وحساب سرعة متوسطة لآخرك ن عينات. هذا من شأنه أن يجعل الرقم الذي يراه المستخدمون يبدو أكثر استقرارًا مما قد يفعله الآن. جعل السرعة Array و .push() أحدث عينة. يستخدم .shift() لإسقاط أقدم العينات حتى لا تفقد دقة كبيرة. سوف تمنحك التجربة والخطأ فكرة أفضل عن عدد العينات التي يجب الاحتفاظ بها وعدد المرات التي تأخذها.

نصائح أخرى

يمكنك moniter سرعة التحميل على الخادم ثم إرسال هذه البيانات مرة أخرى إلى العميل. غالبًا ما تستخدم هذه التقنية لنماذج تحميل ملف AJAX.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top