Ringkasan
Sebelum browser dapat merender suatu halaman, browser harus membuat pohon DOM dengan menguraikan markup HTML. Selama proses ini, setiap kali parser menemukan skrip, parser harus menghentikan dan mengeksekusinya sebelum melanjutkan mem-parsing HTML. Dalam kasus skrip eksternal, parser juga dipaksa menunggu sumber daya diunduh, yang dapat menimbulkan satu atau lebih menunda waktu hingga pertama kali halaman dirender. Lihat Menambahkan Interaktivitas dengan JavaScript untuk mempelajari lebih lanjut tentang cara JavaScript memengaruhi jalur perenderan kritis.Saran
Sebaiknya Anda menghindari dan meminimalkan penggunaan JavaScript pemblokiran, khususnya skrip eksternal yang harus diambil sebelum dapat dieksekusi. Skrip yang diperlukan untuk merender konten halaman dapat dijadikan inline guna menghindari permintaan jaringan ekstra, namun konten yang dijadikan inline harus berukuran kecil dan harus dieksekusi dengan cepat agar dapat memberikan performa yang baik. Skrip yang tidak penting untuk perenderan awal harus dibuat dalam mode asinkron atau ditunda hingga perenderan pertama selesai. Harap diingat bahwa agar hal ini dapat meningkatkan waktu pemuatan, Anda juga harus mengoptimalkan pengiriman CSS.JavaScript Inline
Skrip eksternal yang memblokir memaksa browser untuk menunggu JavaScript diambil, yang dapat menambah 1 roundtrip jaringan atau lebih sebelum halaman dapat dirender. Jika skrip eksternal berukuran kecil, Anda dapat menjadikan kontennya inline secara langsung ke dokumen HTML dan menghindari latensi permintaan jaringan. Misalnya, apabila dokumen HTML terlihat seperti ini:<html> <head> <script type="text/javascript" src="small.js"></script> </head> <body> <div> Hello, world! </div> </body> </html>
small.js
terlihat seperti ini:
/* contents of a small JavaScript file */
<html> <head> <script type="text/javascript"> /* contents of a small JavaScript file */ </script> </head> <body> <div> Hello, world! </div> </body> </html>
small.js
dan memungkinkan
browser untuk memberikan waktu render pertama yang lebih cepat. Namun, perlu diperhatikan bahwa membuat konten skrip menjadi inline juga memperbesar
ukuran dokumen HTML dan konten skrip yang sama mungkin perlu dijadikan inline di
beberapa halaman. Sehingga, dianjurkan untuk membuat skrip berukuran kecil menjadi inline agar dapat memberikan performa yang terbaik.
Membuat JavaScript pada Mode Asinkron
Secara default JavaScript memblokir kontruksi DOM sehingga menunda waktu untuk perenderan pertama kali. Kepada mencegah JavaScript memblokir parser, kami sarankan menggunakanasync
HTML
pada skrip eksternal. Contoh:
<script async src="my.js">
document.write
. Skrip yang bergantung pada perintah eksekusi atau perlu mengakses/mengubah
DOM atau CSSOM halaman mungkin harus ditulis ulang terkait masalah batasan ini.
Menunda pemuatan JavaScript
Pemuatan dan eksekusi skrip yang tidak diperlukan untuk perenderan halaman awal dapat ditunda hingga perenderan awal atau bagian penting lain dari halaman telah selesai dimuat. Tindakan ini dapat membantu mengurangi pengisian konten pada resource dan meningkatkan performa.FAQ
- Bagaimana jika saya menggunakan library JavaScript seperti jQuery?
- Banyak library JavaScript, seperti JQuery, digunakan untuk meningkatkan kualitas halaman guna menambahkan interaktivitas, animasi, dan efek tambahan lainnya. Namun, banyak dari perilaku ini yang dapat ditambahkan dengan aman setelah konten paruh atas dirender. Cari tahu cara membuat JavaScript asinkron atau menunda pemuatannya.
- Bagaimana jika saya menggunakan framework JavaScript untuk menyusun halaman?
- Jika konten halaman disusun oleh JavaScript sisi klien, Anda harus menyelidiki penyederhanaan modul JavaScript yang relevan untuk menghindari perjalanan bolak-balik jaringan. Demikian pula, meningkatkan perenderan sisi server dapat meningkatkan kinerja pemuatan halaman pertama secara signifikan: merender template JavaScript pada server untuk memberikan perenderan pertama kali yang cepat, lalu menggunakan template sisi klien setelah halaman dimuat. Untuk selengkapnya informasi tentang rendering sisi server, lihat http://youtu.be/VKTWdaupft0?t=14m28s.
Masukan
Apakah halaman ini membantu?