Mi è stato detto che document.write deve essere evitato nella pagina Web poiché danneggia le prestazioni della pagina web. Ma qual è la ragione esatta?Perché document.write influisce negativamente sulle prestazioni Web?
risposta
document.write()
non sembra essere molto dannoso per il rendimento della pagina nella maggior parte dei browser. In effetti, ho eseguito alcuni test allo DHTML Kitchen e ho rilevato che in Firefox, Opera e Chrome, document.write() era in realtà più veloce al primo caricamento e comparabile in velocità dell'HTML standard agli aggiornamenti successivi. Internet Explorer 8 era l'eccezione, ma in realtà era più veloce degli altri browser per il rendering dell'HTML (sorprendentemente).
As Guffa's answer indica, e quello che stavo creando, i problemi di prestazioni reali provengono da script inline stessi. Il rendering del contenuto può continuare solo quando uno script in linea ha terminato l'esecuzione, quindi se hai una routine complessa all'interno di uno script inline puoi interrompere in modo evidente il caricamento della pagina per l'utente finale. Ecco perché è preferibile attendere onload
/DOMReady
e utilizzare la manipolazione DOM.
È particolarmente imprudente utilizzare document.write() dopo che il documento ha terminato il caricamento. Nella maggior parte dei browser, usando document.write() dopo che il caricamento del documento implica anche document.open(), che cancellerà lo HTML corrente dallo schermo e creerà un nuovo documento.
Ciò non significa che document.write() non abbia i suoi usi, è solo che la maggior parte degli sviluppatori lo utilizza per i motivi sbagliati. problemi reali con document.write() includono:
- Non si può usare in documenti serviti come XHTML (per i browser che analizza correttamente XHTML come XHTML).
- Sovrascrive l'intera pagina quando viene utilizzata dopo il completamento dell'analisi DOM.
- Aggiunge contenuto alla pagina che non è accessibile ai browser con JavaScript disabilitato (anche se
<noscript>
a volte è una soluzione valida qui). - Più difficile da gestire rispetto all'HTML statico.
Se si dispone di script eseguiti nel mezzo della pagina, il browser deve attendere il completamento dello script prima di poter continuare a analizzare il resto della pagina.
Per rendere la tua pagina veloce, vuoi che il browser analizzi la pagina il prima possibile in modo che possa essere mostrata all'utente, dopodiché puoi applicare le funzionalità extra aggiunte dagli script.
Penso che ci siano alcune ragioni per cui dovrebbe essere evitato.
ma cosa vuoi dire è che, se si dispone di qualche parte nel codice html di un
<script>
document.write('mystuff')
</script
uno dei problemi è che bevore il browser in grado di visualizzare il vostro sito web, si deve caricare il Javascript interprete. se volete iniziare il vostro javascript solo body.onload allora in grado di visualizzare l'intero sito per l'utente, e quindi eseguire il javascript ... quindi
il tempo di caricamento soggettivo è più veloce :-)
- 1. setTimeout() influisce sulle prestazioni
- 2. L'offuscamento influisce sulle prestazioni?
- 3. L'hard coding della stringa influisce sulle prestazioni?
- 4. In che modo Object.observe() influisce sulle prestazioni?
- 5. L'ordine Sql JOIN influisce sulle prestazioni?
- 6. fa favicon 404 influisce sulle prestazioni
- 7. In che modo l'architettura NUMA influisce sulle prestazioni di ActivePivot?
- 8. La lunghezza della chiave influisce sulle prestazioni del dizionario?
- 9. L'utilizzo di un framework PHP influisce sulle prestazioni?
- 10. Il numero di colonne influisce sulle prestazioni della query?
- 11. L'incapsulamento del codice Javascript negli oggetti influisce sulle prestazioni?
- 12. Che cos'è l'aliasing e in che modo influisce sulle prestazioni?
- 13. La dimensione della tabella influisce sulle prestazioni INSERT?
- 14. L'omissione dei punti e virgola influisce sulle prestazioni in JavaScript?
- 15. L'aggiunta di troppi listener di eventi influisce sulle prestazioni?
- 16. Perché l'ordine dei cicli in un algoritmo moltiplicatore di matrice influisce sulle prestazioni?
- 17. Perché usare document.write?
- 18. Primefaces Domande sulle prestazioni
- 19. Effetto Systemtap sulle prestazioni
- 20. In che modo il DBMS influisce sulle prestazioni dell'applicazione? E gli strumenti della GUI Informix?
- 21. Suggerimenti sulle prestazioni domande
- 22. Latenza indotta dalla raccolta dati obsoleti Java che influisce sulle prestazioni
- 23. sqlite3 influiscono sulle prestazioni?
- 24. In che modo Dateadd influisce sulle prestazioni di una query SQL?
- 25. Il caricamento di molti pacchetti influisce sulle prestazioni generali di un'applicazione Symfony2?
- 26. La variabile `.0` inaccessibile in` locals() `influisce sulla memoria o sulle prestazioni?
- 27. In che modo un vincolo univoco influisce sulle prestazioni di scrittura in Postgres DB
- 28. La dimensione di un file jar influisce sulle prestazioni della JVM?
- 29. C++ Come influisce la parola chiave mutabile sulle prestazioni del contenitore?
- 30. In che modo la coerenza della cache influisce sulle prestazioni in questo caso
Vorrei aggiungere che ogni volta che viene inserito un nuovo codice HTML tramite document.write() l'intera pagina viene analizzata di nuovo e l'intera cascata CSS e tutto il resto. – Robusto
Questo vale per qualsiasi script, non solo per 'document.write'. –
@Robusto: Hm ... Non è possibile analizzare di nuovo l'intera pagina. Come 'document.write' viene usato mentre la pagina viene analizzata, l'analisi non è ancora completa ... – Guffa