AS3: Calcolo della velocità di upload corrente (o rendimento)
-
01-10-2019 - |
Domanda
sto caricando file utilizzando il metodo di caricamento () della classe FileReference. Voglio visualizzare la velocità di connessione in corso e mi chiedevo cosa è stato un buon modo per farlo.
La mia tecnica attuale è quella di utilizzare un timer ogni 1 mili secondo come segue:
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);
e currentBytes viene impostata nel ProgressEvent.PROGRESS. Questa tecnica sembra impreciso. Mi chiedevo che cosa gli altri modi che potrebbero usare per calcolare la velocità di upload durante il caricamento e la visualizzazione in tempo reale.
Tutte le idee o opinioni sono accolti!
La ringrazio molto,
Rudy
Soluzione
Se questo blocco di codice è una copia e incolla di certo non funzionerà come avete aspettato a. Dichiarate speed
come una funzione all'interno del quale sembrate a ridefinire come un numero. Apprezzo vi farla franca con la grammatica abbozzato l'IDE Flash lasciare, ma il codice del genere sta per portare voi in tutti i tipi di problemi. Cercate di essere esplicito quando si scrive il codice.
Prova qualcosa di simile, sostituendo yourLoader
con qualsiasi identificativo assegnato al Uploader:
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);
che dovrebbe calcolare quanti byte spostati in 1 secondo gli intervalli.
Modifica:
Come si potrebbe rendere l'intervallo di un po 'più piccola di 1000 ms e calcolare una velocità media per la vostra ultima n campioni. Ciò renderebbe il numero gli utenti vedono apparire più stabile di quanto non lo fa probabilmente in questo momento. Fai la velocità di un Array
e .push()
l'ultimo campione. Utilizzare .shift()
far cadere i campioni più antichi in modo che non si perde troppo la precisione. Tentativi ed errori vi darà una migliore idea di quanti campioni da tenere e la frequenza di prenderli.
Altri suggerimenti
È possibile monitorare la velocità di upload sul server e quindi inviare di nuovo che i dati al client. Questa tecnica è spesso usato per le forme di upload di file Ajax.