Katakanlah saya memiliki file JavaScript yang cukup besar, dikemas hingga sekitar 100kb atau lebih. Maksud saya, ini adalah file eksternal yang akan ditautkan melalui <script src="...">
, bukan disisipkan ke dalam HTML itu sendiri.
Di mana tempat terbaik untuk meletakkan ini di HTML?
<html>
<head>
<!-- here? -->
<link rel="stylesheet" href="stylez.css" type="text/css" />
<!-- here? -->
</head>
<body>
<!-- here? -->
<p>All the page content ...</p>
<!-- or here? -->
</body>
</html>
Apakah akan ada perbedaan fungsional antara masing-masing opsi?
javascript
html
optimization
nickf
sumber
sumber
Jawaban:
Yahoo! Tim Performa Luar Biasa merekomendasikan menempatkan skrip di bagian bawah halaman Anda karena cara browser mengunduh komponen.
Tentu saja komentar Levi "tepat sebelum Anda membutuhkannya dan tidak lebih cepat" adalah jawaban yang benar, yaitu "itu tergantung".
sumber
$(function () {...})
sebagai bagian bawah halaman juga, atau haruskah itu di dalam<head>
?</body>
?Tempat terbaik untuk itu adalah tepat sebelum Anda membutuhkannya dan tidak lebih cepat.
Juga, tergantung pada lokasi fisik pengguna Anda, menggunakan layanan seperti layanan S3 Amazon dapat membantu pengguna mengunduhnya dari server yang secara fisik lebih dekat dengan mereka daripada server Anda.
Apakah skrip js Anda lib yang umum digunakan seperti jQuery atau prototipe? Jika demikian, ada sejumlah perusahaan, seperti Google dan Yahoo, yang memiliki alat untuk menyediakan file-file ini untuk Anda di jaringan terdistribusi.
sumber
Sebagai patokan, tempat terbaik untuk meletakkan
<script>
tag adalah bagian bawah halaman, tepat sebelum</body>
tag. Sesuatu seperti ini:Mengapa?
CSS
Agak di luar topik, tapi ... Letakkan stylesheet di bagian atas.
Bacaan lebih lanjut
Yahoo telah merilis panduan yang sangat keren yang berisi daftar praktik terbaik untuk mempercepat situs web. Pasti layak dibaca: https://developer.yahoo.com/performance/rules.html
sumber
Dengan 100k Javascript, Anda tidak boleh memasukkannya ke dalam file. Gunakan file Javascript skrip eksternal. Tidak ada kesempatan di neraka Anda hanya akan menggunakan jumlah kode ini hanya dalam satu halaman HTML. Kemungkinan Anda bertanya di mana Anda harus memuat file Javascript, untuk ini Anda sudah menerima jawaban yang memuaskan.
Tapi saya ingin menunjukkan bahwa umumnya, browser modern menerima file Javascript gzip ped! Cukup gzip
x.js
file kex.js.gz
, dan arahkan ke itu disrc
atribut. Itu tidak bekerja pada sistem file lokal, Anda memerlukan server web agar bisa berfungsi. Tetapi penghematan dalam byte yang ditransfer bisa sangat besar.Saya telah berhasil mengujinya di Firefox 3, MSIE 7, Opera 9, dan Google Chrome. Tampaknya tidak berfungsi seperti ini di Safari 3.
Untuk info lebih lanjut, lihat posting blog ini , dan lainnya halaman kuno lainnya yang berguna karena menunjukkan bahwa server web dapat mendeteksi apakah browser dapat menerima Javascript yang di-gzip, atau tidak. Jika sisi server Anda dapat secara dinamis memilih untuk mengirim gzip atau teks biasa, Anda dapat membuat halaman dapat digunakan di semua browser web.
sumber
Menempatkan javascript di atas akan tampak lebih rapi, tetapi secara fungsional, lebih baik mengikuti HTML. Dengan begitu, javascript Anda tidak akan berjalan dan mencoba untuk mereferensikan elemen HTML sebelum mereka dimuat. Masalah semacam ini seringkali hanya menjadi jelas ketika Anda memuat halaman melalui koneksi internet yang sebenarnya, terutama yang lambat.
Anda juga dapat mencoba memuat javascript secara dinamis dengan menambahkan elemen header dari kode javascript lain, meskipun itu hanya masuk akal jika Anda tidak menggunakan semua kode sepanjang waktu.
sumber
Dengan menggunakan cuzillion Anda dapat menguji pengaruh pada pemuatan halaman dari penempatan tag skrip yang berbeda menggunakan metode yang berbeda: inline, eksternal, "tag HTML", "document.write", "elemen JS DOM", "iframe", dan "XHR eval" . Lihat bantuan untuk penjelasan perbedaannya. Ini juga dapat menguji stylesheet, gambar, dan iframe.
sumber
Jawabannya tergantung bagaimana Anda menggunakan objek javascript. Seperti yang sudah ditunjukkan memuat file javascript di footer daripada header tentu saja meningkatkan kinerja tetapi harus diperhatikan bahwa objek yang digunakan diinisialisasi lebih lambat daripada mereka dimuat di footer. Satu lagi cara adalah memuat file 'js' yang ditempatkan di folder yang akan tersedia untuk semua file.
sumber
Seperti orang lain katakan, itu kemungkinan besar masuk dalam file eksternal. Saya lebih suka memasukkan file seperti itu di akhir <head />. Metode ini lebih ramah manusia daripada ramah mesin, tetapi dengan cara itu saya selalu tahu di mana JS berada. Tidak mudah dibaca untuk menyertakan file skrip di tempat lain (imho).
Jika Anda benar-benar perlu memeras setiap ms terakhir maka Anda mungkin harus melakukan apa yang dikatakan Yahoo.
sumber
Script harus dimasukkan di akhir tag body karena dengan cara ini HTML akan diuraikan oleh browser dan ditampilkan sebelum skrip dimuat.
sumber
Jawaban atas pertanyaan tergantung. Ada 2 skenario dalam situasi ini dan Anda harus membuat pilihan berdasarkan skenario yang sesuai.
Skenario 1 - Skrip kritis / Skrip wajib diperlukan
Jika skrip yang Anda gunakan penting untuk memuat situs web, disarankan untuk ditempatkan di bagian atas dokumen HTML Anda yaitu,
<head>
,. Beberapa contoh termasuk - kode aplikasi, bootstrap, font, dll.Skenario 2 - Skrip analitik / kurang penting
Ada juga skrip yang digunakan yang tidak memengaruhi tampilan situs web. Skrip seperti itu disarankan untuk dimuat setelah semua segmen penting dimuat. Dan jawabannya adalah bagian bawah dokumen, yaitu bagian bawah Anda
<body>
sebelum tag penutup. Beberapa contoh termasuk - Google analytics, hotjar, dll.Bonus - async / tunda
Anda juga dapat memberi tahu peramban bahwa pemuatan skrip dapat dilakukan secara bersamaan dengan yang lain dan dapat dimuat berdasarkan pilihan peramban menggunakan argumen defer / async dalam kode skrip.
misalnya.
<script async src="script.js"></script>
sumber
Tautan javascript Anda dapat berada di kepala atau di akhir tag tubuh, memang benar bahwa kinerja meningkat dengan menempatkan tautan di akhir tag tubuh Anda, tetapi kecuali jika kinerja adalah masalah, menempatkannya di kepala lebih baik. bagi orang untuk membaca dan Anda tahu di mana tautan berada dan dapat merujuknya dengan lebih mudah.
sumber
Saya akan mengatakan bahwa itu tergantung pada kenyataan apa yang Anda rencanakan untuk dicapai dengan kode Javascript:
sumber
document.write
, yang seharusnya tidak Anda lakukan.