2016-05-21 33 views
31

mi stava ispezionando la mia pagina e ho ottenuto questo avvertimento:differito a lungo in esecuzione compito timer (s) per migliorare lo scorrimento scorrevolezza

differite a lungo in esecuzione compito timer (s) per migliorare la scorrevolezza di scorrimento. Vedo crbug.com/574343

Ho visto anche:

Blink differita un compito al fine di rendere più agevole lo scorrimento. Le attività del timer devono impiegare meno di 50 ms per l'esecuzione per evitare questo. Si prega di vedere https://developers.google.com/web/tools/chrome-devtools/profile/evaluate-performance/rail e https://crbug.com/574343#c40 per ulteriori informazioni.

Che cos'è?

enter image description here

+1

Hai letto http://crbug.com/574343? – Alex

risposta

69

Ciò si verifica quando i Blink (motore di rendering di Chrome) decide di ritardare l'esecuzione di un timer (come una funzione passata a requestAnimationFrame, setTimeout o setInterval) perché quelle funzioni sono generalmente prendendo> 50ms per l'esecuzione e c'è l'input tattile dell'utente. È fatto per dare la priorità alla gestione dell'input dell'utente (come pergamene e tocchi) sopra quello che sta facendo il sito.

Se si è verificato questo messaggio, è probabile che gli utenti abbiano un comportamento simile. Ecco come riprodurre questo scenario:

  1. javascript di lunga durata che viene attivato tramite timer
  2. essere sul cellulare (o emulando con modalità dispositivo DevTools)
  3. Avere l'input tocco, lo scorrimento con le dita in basso sullo schermo è il più affidabile. Toccando o sfogliando la pagina potrebbe anche attivarlo, ma è meno probabile e più difficile da riprodurre.
  4. La limitazione della CPU sperimentale di devtools renderà il JS più lungo e offrirà maggiori possibilità di vederlo.

Il metodo per come risolvere questo è direttamente dal referenced issue nel messaggio console verso il basso in un commento 40:

  1. Registra una linea temporale sulla pagina che sta provocando il messaggio console su differimento.
  2. Selezionare l'intera timeline e aprire il riquadro "Registro eventi" nella parte inferiore della finestra.
  3. Inserire "Timer attivato" nel campo di testo del filtro. (Vedere l'immagine in basso)
  4. Cercare i timer nell'elenco il cui "Tempo totale" supera i 50 millisecondi. Questi sono quelli problematici. (Si noti che i timer che superano i 10 millisecondi possono anche attivare questo messaggio in alcuni casi in cui il browser sta elaborando un gesto dell'utente.)

Si desidera eseguire queste funzioni più rapidamente o meno frequentemente.

Timer fired filter on timeline

+3

Una delle migliori risposte che ho letto. Grazie! – Sonny

+1

Le versioni più recenti di Chrome dispongono di questa funzione nella scheda "Prestazioni", nel caso in cui abbiate difficoltà a trovarlo. – quicklikerabbit