Ho letto la documentazione di Google Developers sull'ottimizzazione delle prestazioni del Web. Sono un po 'confuso con la terminologia usata lì. Entrambi i file CSS e JavaScript bloccano la costruzione del DOM. Ma il CSS è chiamato render-blocking mentre JavaScript è chiamato parser-blocking. Qual è la differenza tra i termini "parser-blocking" e "render-blocking"? O sono uguali e la terminologia è semplicemente intercambiabile?Blocco del parser e blocco del rendering
risposta
Immaginate una pagina HTML con due elementi <script src="...">
. Il parser vede il primo. Deve interrompere * l'analisi mentre recupera e poi esegue il javascript, perché potrebbe contenere chiamate al metodo document.write()
che cambiano fondamentalmente il modo in cui deve essere analizzato il markup successivo. Recuperare le risorse su Internet è comparativamente molto più lento rispetto alle altre cose che fa il browser, quindi rimane in attesa senza nulla da fare. Alla fine il JS arriva, esegue e il parser può andare avanti. Quindi vede il secondo tag <script src="...">
e deve passare attraverso l'intero processo di attesa del caricamento della risorsa. È un processo sequenziale e questo è il blocco del parser.
Le risorse CSS sono diverse. Quando il parser vede un foglio di stile da caricare, invia la richiesta al server e prosegue. Se ci sono altre risorse da caricare, queste possono essere recuperate in parallelo (fatte salve alcune restrizioni HTTP). Ma solo quando le risorse CSS sono caricate e pronte, la pagina può essere dipinta sullo schermo. Questo è il blocco del rendering, e poiché i recuperi sono in parallelo, è un rallentamento meno serio.
* Il blocco del parser non è così semplice come in alcuni browser moderni. Hanno una certa capacità di analizzare provvisoriamente il seguente codice HTML nella speranza che lo script, quando viene caricato ed eseguito, non faccia nulla per rovinare l'analisi successiva, o se lo fa, che le stesse risorse devono ancora essere caricate . Ma possono ancora dover eseguire il lavoro se lo script fa qualcosa di imbarazzante.
Grazie per l'ottima spiegazione. Questo ha sicuramente chiarito la mia comprensione! – M00
Esiste anche qualcosa noto come * scansione di pre-caricamento *, in cui il browser guarda avanti ed emette una richiesta per ottenere più che su file JS/CSS. Tuttavia, esiste un limite al numero di chiamate parallele che un browser può effettuare. –
- 1. Rilevamento del blocco dell'applicazione
- 2. Haskell hChiusura del blocco
- 3. $ this-> renderTotals() che esegue il rendering del blocco?
- 4. OCMock e test del blocco, l'esecuzione
- 5. Finestra del proprietario del blocco Java FX
- 6. Svantaggi del blocco riga MySQL
- 7. NSInvocazione con argomenti del blocco
- 8. modificare il contenuto del blocco
- 9. Errore di acquisizione del blocco del database e hsqldb
- 10. Come regolare l'interlinea del blocco del codice in knitr?
- 11. Interruzione del rendering CollectionView per evitare il blocco del thread dell'interfaccia utente
- 12. Come rimuovere JavaScript per il blocco del rendering e StyleSheet in wordpress?
- 13. dispatch_async e blocco in iOS
- 14. Blocco di Golang e non blocco
- 15. Blocco mutex: cosa significa "blocco"?
- 16. Iniettare con più parametri del blocco
- 17. operatori di blocco del server sql
- 18. ruby all'interno del blocco javascript [modello sottile]
- 19. rmarkdown: manipola le opzioni del blocco programmaticamente?
- 20. Response.Redirect eccezione all'interno del blocco try/catch
- 21. Correzione multithread: utilizzo del blocco sincronizzato
- 22. Il blocco del certificato in Ajax chiama
- 23. Hai davvero bisogno del blocco 'finally'
- 24. plt.show() che fa il blocco del terminale
- 25. Implementazione del blocco distribuito utilizzando i file
- 26. Perché il blocco rallenta questo parser di file sequenziali?
- 27. risorse cuoco accesso all'interno del blocco rubino
- 28. Allineamento del centro blocco in linea
- 29. Errore di decrittografia: blocco del pad danneggiato
- 30. Java statica del codice di blocco
Da documenti, _ "JavaScript può anche bloccare la costruzione di' DOM' e ritardare il rendering della pagina. ('Parser-blocking')" _ vs _ "Il CSS viene trattato come una risorsa di blocco del rendering, il che significa che il browser manterrà il rendering di qualsiasi contenuto processato fino a quando non verrà costruito il 'CSSOM'. (' render-blocking') "_ – Rayon