Saya mengoptimalkan waktu pemuatan halaman situs web. Salah satu caranya adalah dengan menggabungkan beberapa permintaan HTTP untuk CSS menjadi satu permintaan HTTP gabungan. Tetapi salah satu pengulas mengajukan pertanyaan yang menarik: tidak akan melumpuhkan pengunduhan beberapa file CSS mengurangi waktu buka halaman?
Saya tidak pernah mempertimbangkan opsi ini, karena satu-satunya hal yang saya baca di internet adalah bahwa mengurangi jumlah (pemblokiran) permintaan HTTP adalah kunci untuk halaman web yang lebih cepat (meskipun Google Pagespeed Insights tampaknya tidak secara jelas menyatakan 1 ini ).
Saya melihat beberapa alasan mengapa parallellization tidak akan meningkatkan kinerja, atau hanya masalah yang sangat kecil (melebihi manfaat menggunakan lebih sedikit permintaan HTTP):
- Menyiapkan koneksi baru itu mahal. Meskipun pengaturan beberapa koneksi dapat dilakukan secara paralel, browser akan menggunakan paling banyak sekitar 4-6 koneksi (tergantung pada browser), jadi mengunduh CSS secara paralel akan memblokir pengunduhan aset lain seperti JavaScript dan gambar.
- Menyiapkan koneksi HTTPS membutuhkan beberapa data tambahan. Saya sudah membaca ini dengan mudah bisa menjadi beberapa KB data. Ini adalah beberapa data tambahan yang harus dikirim melalui kawat, bukan CSS yang sebenarnya ingin kami kirim.
- Karena algoritma TCP Slow Start, semakin banyak data yang telah dikirim melalui koneksi, semakin cepat koneksi akan terjadi. Jadi koneksi yang bertahan lama sebenarnya mengirim data jauh lebih cepat daripada koneksi baru. Lihat misalnya protokol SPDY, yang menggunakan koneksi tunggal untuk meningkatkan waktu pemuatan halaman.
- TCP adalah sebuah abstraksi: masih ada (biasanya) hanya satu koneksi yang mendasarinya. Jadi sementara banyak permintaan digunakan, data yang dikirim melalui kabel mungkin tidak perlu mendapat manfaat dari beberapa koneksi sama sekali untuk meningkatkan kecepatan.
- Koneksi internet secara inheren tidak dapat diandalkan, terutama pada ponsel. Satu permintaan dapat diselesaikan secara signifikan lebih cepat dari yang lainnya. Menggunakan banyak permintaan untuk CSS berarti membuat halaman web diblokir sampai permintaan terakhir selesai, yang mungkin jauh lebih lambat daripada koneksi rata-rata.
Jadi, apakah ada manfaat sama sekali dalam memparalelkan permintaan HTTP untuk file CSS?
Catatan / perbarui: semua file CSS memblokir render. File CSS yang belum pernah dipindahkan di luar jalur kritis.