Bir web sitesinin sayfa yükleme süresini optimize ediyordum. Yollardan biri, CSS için birden çok HTTP isteğini birleştirilmiş bir HTTP isteğinde birleştirmektir. Ancak gözden geçirenlerden biri ilginç bir soru sordu: Birden fazla CSS dosyasının indirilmesine paralellik kazandırmak sayfa yükleme sürelerini azaltır mı?
İnternette okuduğum tek şey, HTTP isteklerinin sayısının azaltılmasının daha hızlı bir web sayfasının anahtarı olması (Google Pagespeed Insights'ın bunu açıkça belirtmemiş gibi görünmesine rağmen) bu seçeneği hiç düşünmedim 1 ).
Paralelleştirmenin performansı iyileştirmemesinin veya yalnızca çok az önemli olmasının birkaç nedeni görüyorum (daha az HTTP isteği kullanmanın avantajından daha ağır basar):
- Yeni bir bağlantı kurmak pahalıdır. Birden çok bağlantı kurmak paralel olarak yapılabilirken, tarayıcılar en çok yaklaşık 4-6 bağlantı (tarayıcıya bağlı olarak) kullanır, bu nedenle CSS'nin paralel olarak indirilmesi JavaScript ve resimler gibi diğer varlıkların indirilmesini engeller.
- HTTPS bağlantısı kurmak fazladan veri gerektirir. Bu kolayca birkaç KB veri olabilir okudum. Bu, gerçekten göndermek istediğimiz CSS yerine kablo üzerinden gönderilmesi gereken bazı ekstra verilerdir.
- TCP Yavaş Başlatma algoritması nedeniyle, bir bağlantı üzerinden ne kadar çok veri gönderilirse, bağlantı o kadar hızlı olur. Böylece daha uzun ömürlü bağlantılar, verileri yeni bağlantılardan çok daha hızlı gönderir. Örneğin, sayfa yükleme sürelerini iyileştirmek için tek bir bağlantı kullanan SPDY protokolüne bakın.
- TCP bir soyutlamadır: hala (normalde) yalnızca bir tane temel bağlantı vardır. Bu nedenle, birden çok istek kullanılırken, kablo üzerinden gönderilen veri, hızı artırmak için birden fazla bağlantıdan yararlanmayabilir.
- İnternet bağlantıları özellikle mobil cihazlarda doğal olarak güvenilmezdir. Bir istek, diğerinden önemli ölçüde daha hızlı tamamlanabilir. CSS için birden fazla istek kullanılması, web sayfasının son istek tamamlanana kadar engellenmesi anlamına gelir; bu, ortalama bağlantıdan önemli ölçüde daha geç olabilir.
Peki, CSS dosyaları için HTTP isteklerini paralel hale getirmenin herhangi bir faydası var mı?
Not / güncelleme: tüm CSS dosyaları oluşturma engelleme özelliğine sahiptir. Zaten kritik yolun dışına taşınmamış olan CSS dosyaları.