2010-03-23 12 views
44

Sto usando Firebug 1.5.2 e mentre collaudo un sito prima della versione di produzione, posso vedere un'enorme quantità di tempo consumata da parti "bloccanti" delle richieste.Che cosa significa "Blocco" in Firebug Net Panel?

Che cosa significa esattamente il "Blocco"?

risposta

5

Il blocco è un termine utilizzato per descrivere un evento che arresta altri eventi o codice dall'elaborazione (all'interno della stessa discussione).

Ad esempio se si utilizzano i socket "bloccanti", il codice dopo che la richiesta del socket è stata effettuata non verrà elaborato fino a quando la richiesta non è completa (all'interno della stessa thread).

Le attività asincrone (non bloccanti) farebbero semplicemente la richiesta e lasceranno funzionare altro codice mentre la richiesta è avvenuta in background.

Nella vostra situazione significa fondamentalmente che alcune parti di firebug/il browser non possono essere attivate fino a quando non sono state completate altre parti. Cioè è in attesa di un'immagine da scaricare prima di scaricarne altri.

+3

È possibile configurare il server Apache per rimuovere tali problemi di blocco? Sono sicuro che il server può farlo perché quasi tutti i siti IIS non hanno ritardi di blocco, ma l'installazione di Apache "pulita" lo fa ... – Laserson

27

"Blocco" in precedenza (versioni precedenti di FireBug) era chiamato "Accodamento". In realtà significa che la richiesta è in coda in attesa della connessione disponibile. Per quanto ne so il numero di connessioni persistenti per impostazione predefinita è limitato nelle ultime versioni di Firefox a 6, anche IE8 6. In precedenza era solo 2. Può essere modificato dall'utente nelle impostazioni del browser.
Anche se so che mentre il file javascript si sta caricando, tutte le altre risorse (css, immagini) sono bloccate

+0

Vorrei solo aggiungere che è per questo che dovresti caricare i file javaScript per ultimi (se possibile). La pagina sembrerà caricarsi molto più velocemente all'utente se non è necessario attendere il caricamento di immagini o CSS. – dspacejs

+0

Vedere anche la [documentazione ufficiale di Mozilla] corrispondente (https://developer.mozilla.org/en-US/docs/Tools/Network_Monitor#Timings). – tanius

4

Per quanto ne so, due motivi fanno sì che i componenti causino il blocco di altri dal caricamento.

  1. Limite imposto dal browser (ma solitamente configurabile) di quante risorse parallele possono essere caricate da un particolare host alla volta.
  2. Inline javascript, che può causare al browser di aspettare e vedere se è affatto bisogno di andare avanti con il download del resto dei componenti (nel caso in cui i reindirizzamenti JavaScript o sostituisce il contenuto della pagina)
1

Significa "in attesa di connessione". Come spiegato nello documentation by Mozilla ufficiale, "Blocco" è "Tempo trascorso in coda in attesa di una connessione di rete". Ciò può essere dovuto al fatto che Firefox ha raggiunto il limite delle connessioni parallele interne, come spiegato qui e nelle risposte qui.

Può anche significare "in attesa perché il server è occupato". Nella documentazione ufficiale linkata sopra manca una possibile ragione per i tempi di "blocco": può accadere quando il server non è in grado di fornire una connessione in quel momento perché è sovraccarico. In tal caso, la richiesta di connessione entra in una coda sul server fino a quando non può essere elaborata una volta che un processo di lavoro diventa libero [source].

In senso tecnico, tale connessione non è stata ancora stabilita poiché la richiesta è in attesa di accept() dal server [source]. E forse questo è il motivo per cui è incluso in "Blocco" di Firefox, in quanto potrebbe anche essere considerato "Tempo trascorso in una coda in attesa di una connessione di rete".

(Questo comportamento non è completamente coerente a partire da Firefox 51 però: per il primo URL richiamato in una nuova scheda, il tempo prima che il server accetti la richiesta di connessione non viene conteggiato nella scheda "Tempi" - solo per gli URL successivi inseriti. Entrambi i comportamenti potrebbero essere un bug, non so quale.)