İçerik verimliliğini optimize etme

Ilya Grigorik
Ilya Grigorik

Web uygulamalarımız kapsam, iddia ve işlevsellik açısından büyümeye devam ediyor. Bu iyi bir şey. Ancak daha zengin bir web'e doğru amansız ilerleyiş başka bir trendi de beraberinde getiriyor: Her uygulamanın indirdiği veri miktarı istikrarlı bir hızla artmaya devam ediyor. Mükemmel performans sunmak için her bir baytın yayınını optimize etmemiz gerekir.

Modern bir web uygulaması nasıl görünür? HTTP Arşivi bu soruyu yanıtlamamıza yardımcı olabilir. Proje, en popüler siteleri (Alexa'nın en popüler 1 milyon listesinden 300.000'den fazla site) düzenli olarak tarayarak ve her bir hedef için kaynak sayısı, içerik türleri ve diğer meta verilerle ilgili analizleri kaydedip toplayarak web'in nasıl oluşturulduğunu izler.

HTTP Arşivi trendleri

50. yüzdelik dilim 75. yüzdelik dilim 90. yüzdelik dilim
HTML 13 KB 26 KB 54 KB
Görüntüler 528 KB 1213 KB 2384 KB
JavaScript 207 KB 385 KB 587 KB
CSS 24 KB 53 KB 108 KB
Diğer 282 KB 308 KB 353 KB
Toplam 1054 KB 1985 KB 3486 KB

Yukarıdaki veriler, Ocak 2013 ile Ocak 2014 arasında web'deki popüler hedefler için indirilen bayt sayısındaki artış eğilimini göstermektedir. Elbette her site aynı hızda büyümez veya aynı miktarda veri gerektirmez. Bu nedenle, dağılımdaki farklı yüzdelik dilimleri vurguluyoruz: 50. (medyan), 75. ve 90.

2014'ün başlarında ortalama bir site, toplam 1.054 KB aktarılan bayt ekleyen 75 istekten oluşuyordu ve toplam bayt (ve istek) sayısı önceki yıl boyunca istikrarlı bir hızda artmıştı. Bu durum tek başına şaşırtıcı olmasa da performans açısından önemli sonuçlar doğurur: Evet, internet hızları artıyor ancak farklı ülkelerde farklı oranlarda artıyor ve birçok kullanıcı, özellikle de mobil cihazlarda hâlâ veri sınırlarına ve pahalı tarifeli planlara tabi.

Masaüstü uygulamalarının aksine, web uygulamaları ayrı bir yükleme işlemi gerektirmez: URL'yi girersiniz ve uygulama çalışmaya başlar. Bu, web'in önemli bir özelliğidir. Ancak bunu gerçekleştirmek için genellikle onlarca, bazen de yüzlerce farklı kaynağı getirmemiz gerekir. Bunların tümü megabaytlarca veri oluşturabilir ve hedeflediğimiz anlık web deneyimini kolaylaştırmak için yüzlerce milisaniye içinde bir araya gelmelidir.

Bu gereksinimler ışığında anında web deneyimi sunmak kolay bir iş değildir. Bu nedenle, içerik verimliliğini optimize etmek çok önemlidir: Gereksiz indirmeleri ortadan kaldırmak, çeşitli sıkıştırma teknikleriyle her kaynağın aktarım kodlamasını optimize etmek ve gereksiz indirmeleri ortadan kaldırmak için mümkün olduğunda önbelleğe alma özelliğinden yararlanmak.