Kedua YSlow dan Google Page Speed add-ons sarankan untuk menggabungkan naskah (dan gaya) file ke dalam satu file masing-masing untuk mengurangi jumlah HTTP request, dan saya pasti bisa melihat titik ini ketika file naskah konsisten di seluruh situs, tetapi untuk aplikasi web yang memiliki persyaratan berbeda di seluruh situs.
Cara saya melihatnya ada beberapa opsi:
Gabungkan semua file yang digunakan di seluruh situs, dan setiap halaman mendapatkan file gabungan yang sama - sisi negatifnya adalah konten yang tidak terpakai mengacaukan skrip (dan beban pertama yang lebih berat (juga memuat ulang ketika ada skrip komponen yang berubah))
Gabungkan file berdasarkan per halaman - sisi negatifnya adalah setiap halaman dengan persyaratan berbeda mendapatkan file gabungan yang berbeda (beban pertama yang lebih berat untuk setiap jenis halaman)
Abaikan interpretasi ketat 'satu file saja' dari rekomendasi dan minta halaman memuat beberapa file sebagaimana mestinya, dengan caching diharapkan meniadakan jumlah permintaan HTTP dalam kasus umum - downside adalah jumlah permintaan HTTP pada setiap halaman
Pikiran?
sumber
Jawaban:
Opsi 2 adalah yang terburuk; itu berarti bahwa setiap halaman dengan kombinasi berbeda dari skrip JS yang diperlukan akan menghasilkan permintaan HTTP. Ini akan membuat kinerja jauh lebih buruk.
Opsi 1 adalah yang terbaik. Akhirnya sebagian besar pengguna akan mengunjungi sebagian besar "jenis" halaman situs web Anda, jadi masih menguntungkan untuk menggabungkan semuanya menjadi satu file, dengan pengecualian file JS besar yang diperlukan dalam beberapa halaman yang jarang dikunjungi.
Hit halaman pertama mungkin lebih lambat daripada dengan file yang berbeda, tetapi masih layak dilakukan karena setiap klik halaman lainnya akan menggunakan JS global yang di-cache.
Satu tip; gabungkan mereka secara otomatis jika Anda belum melakukannya!
sumber
Saya biasanya menggabungkan "global Javascript" - jQuery dan plugins umum - ke dalam satu file, dan kemudian menyajikan plugin tambahan sebagai file terpisah bila diperlukan.
Sebagai contoh, satu situs saya menjalankan banyak halaman memiliki tabel data sehingga mereka memiliki
global.js
dengan jQuery, DataTable dan SuperFish (untuk menu saya). Ada dua halaman di situs yang menggunakan "lightbox" jadi saya punya skrip terpisah untuk dua halaman itu.Untuk CSS, saya hanya menyajikan satu file untuk seluruh situs dan mencoba membuat CSS sealami mungkin - kebanyakan halaman hanya memiliki beberapa elemen CSS yang unik.
sumber
Meskipun disarankan untuk menggunakan sesedikit mungkin file, Anda mungkin menemukan bahwa Anda memiliki pemisahan antara fungsionalitas yang diperlukan pada pemuatan halaman, dan fungsionalitas yang dapat ditunda melalui pemuatan asinkron.
Jika cukup JS Anda dapat dimasukkan ke dalam kategori kedua, Anda dapat meningkatkan kecepatan muat awal yang dirasakan halaman, menciptakan pengalaman yang lebih baik bagi pengguna Anda.
sumber
Saya tidak akan menyarankan menggabungkan semuanya. Jika Anda menggunakan perpustakaan umum, Anda dapat memanfaatkan CDN untuk mengirimkan javascripts Anda. Anda kemudian dapat mengambil keuntungan dari caching browser (dengan asumsi situs lain menggunakan CDN yang sama) dan pengiriman yang didistribusikan. Microsoft dan Google masing-masing memiliki solusi (saya juga tidak jujur menggunakan, tapi saya pasti akan memulai) dan mungkin ada yang lain. Pada catatan terkait, SO memiliki pertanyaan ini:
dan jawaban pertama adalah emas murni.
sumber