PHP Flush: quante volte e Best Practices

voti
23

Ho appena finito di leggere questo post: https://developer.yahoo.com/performance/rules.html#flush e hanno già implementato un filo dopo che la parte superiore dei miei caricamento della pagina (testa, css, top banner / ricerca / NAV) .

C'è un calo di prestazioni a Flushing? C'è una cosa come farlo troppo spesso? Quali sono le migliori pratiche?

Se sto andando a colpire un'API esterna per i dati, avrebbe senso per irrigare prima mano in modo che l'utente non è in attesa che i dati di tornare, e può almeno ottenere alcuni dati di prima mano?

È pubblicato 09/12/2008 alle 14:51
fonte dall'utente
In altre lingue...                            


4 risposte

voti
19

La tecnica descritta sembra bello, ma ha diversi trabocchetti:

1) il tempo tra l'inizio e la fine script PHP è piccolo rispetto al tempo di trasmissione; Inoltre, questo consente di risparmiare l'utente circa 0,5 secondi, in base alla sorgente. È che una notevole quantità di tempo per voi?

2) questa tecnica non funziona con il buffer di uscita gzip

3) se si svuota troppo spesso, ti verrà invio di un pacchetto quasi-vuoto sul filo, che potrebbe effettivamente aumentare il tempo di caricamento (sulla lente, collegamenti rumorosi).

4) Una volta che si svuota, non è possibile inviare qualsiasi più intestazioni

5) (problema minore) la risposta del server verrà in codifica Chunked, il che significa che il client non conoscere la dimensione in anticipo (quindi non visualizzerà "x% fatto" durante il download di un file).

D'altra parte, se vi aspettate il vostro l'esecuzione di script per un tempo moooolto (20 + secondi), può essere necessario per inviare alcuni dati (spazi, per esempio) per mantenere il browser dal timeout della connessione.

Risposto il 09/12/2008 a 15:10
fonte dall'utente

voti
5

lato negativo è che non si può gzip il contenuto così come vampate di calore per quanto ne so, quindi ho sempre preferito a gzip, piuttosto che a filo.

Alcune versioni di Microsoft Internet Explorer sarà solo iniziare a visualizzare la pagina dopo aver ricevuto 256 byte di uscita, quindi potrebbe essere necessario inviare gli spazi bianchi in più prima di lavaggio per ottenere quei browser per visualizzare la pagina.

Ciò rende questo non idea, come sembra più imbottitura dei dati non è molto utile.

Risposto il 09/12/2008 a 14:58
fonte dall'utente

voti
3

Credo che colore è in realtà un meccanismo di messa a punto. I browser utilizzano solo circa 8 thread per scaricare contenuti (dipende dal browser). Se si dispone di 15 immagini, il browser inizierà a scaricare 8 immagini e non scaricherà niente altro fino a quando una delle due completa, allora inizierà a scaricare l'immagine successiva, ecc Con il lavaggio dopo l'intestazione, si sono fondamentalmente dicendo ciò che il browser si può cominciare il download. Con il tempo il resto della pagina viene consegnato (vale a dire .5 secondi dopo), il browser potrebbe aver già terminato il download del file CSS e JavaScript. Ciò liberare le discussioni di download per altri contenuti.

Probabilmente non si vuole utilizzare filo in qualsiasi altro luogo che subito dopo l'intestazione. Un browser di solito non renderà tag html non chiusi, in modo da fornire una pagina parziale non visualizzerà le cose più veloce. Le vecchie versioni di IE non visualizzerà nulla fino alla ricezione di una certa quantità di dati, o la consegna pagina è completa.

Risposto il 30/03/2010 a 14:11
fonte dall'utente

voti
2

Dopo il punto di Piskvor - se vi aspettate un '20 + aspettare, si può essere meglio fornire una pagina di base (che può essere compresso con gzip) e l'utilizzo di Ajax per aggiornare la pagina quando il lento processo è terminato. Si inizia a violare l'utilità di base di HTML statico, però.

Risposto il 09/12/2008 a 15:17
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more