|
Google, Yahoo, Facebook ve YouTube internette karşılaşacağınız en büyük sitelerden birkaçı. Her saniye terabaytlarca veriyi işleyip tüm dünyadaki kullanıcılarına transfer etme yeteneğine sahipler. Kullanıcılar ise bu tür siteleri daha dar bir kapsamda algılarlar. Ortalama bir kullanıcı sadece o an kendi yüklediği veya indirdiği birkaç megabaytlık veri ile ilgilenir. Ve zaman zaman kullanıcıların aklında şu soru vardır: "Ne den bu site bu kadar yavaş?"
Bu sorunun cevabı ise oldukça karmaşıktır ve sistemleri dizayn eden mühendislerin performans konusunda odaklandıkları yerlerin tam aksi alanlarda saklıdır. Bölümlenmiş sunucu grupları, data transfer modelleri, veritabanı mimarisi ve optimizasyonu, indexlemeler, ön bellekleme mekanizmaları ve diğer birçok metod bu sunucuların aynı anda milyonlarca ziyaretçiye hizmet verebilmelerini sağlar.Biraz önce bahsettiğimiz siteler dünya üzerindeki en gelişmiş ve dikkatli tasarlanmış sistemlere sahiptir. Peki aynı anda binlerce kişiye hizmet verebilecek bir site tasarlarken nelere dikkat edilmeli, hangi metodlar takip edilmelidir? Bu makalemizde bu konu üzerinde duracağız.
Ziyaretçilerin bir site ile etkileşim hızını ana olarak iki faktör belirler. (Tabii kullanıcının internete olan bağlantısı vb unsurlar da ayrı birer etkendir, ancak bu etkenler site sahibinin kontrolünde olmadığından yazımızın kapsamı dışındadır.)
Bunlar kullanıcı sunucuya bir istek gönderdikten sonra, cevabın hazırlanıması ve kullanıcıya gönderilmesi için gerekli süre -arka yüz performansı-, ve kullanıcı cevabı aldıktan sonra web tarayıcısının sayfayı ekranda göstermesine kadar -ön yüz performansı- geçen süredir.
Ön Yüz Performansı
Bir sitenin performansını arttırmak için yapılabilecek en basit değişiklikler bu gruptadır. Bunlar kısaca :
- HTTP Request sayısını en düşük seviyede tutmak
- İçerik dağıtım ağlarını kullanmak
- Expires başlık bilgisini kullanmak
- GZip sıkıştırma kullanmak
- Stil referanslarını sayfanın başlangıcında vermek
- Script ve CSS kodlarını ayrı dosyalarda tutmak
- Script referanslarını sayfanın altında vermek
- CSS expressionlardan kaçınmak
- DNS çağrılarını en aza indirmek
- Yönlendirmelerden kaçınmak
- Gereksiz, fazla scriptleri çıkarmak
- eTagları düzenlemek
- Ajax dosyalarını önbellekleyebilmek
1 - HTTP Requestleri en aza indirmek
Sayfalarınızda bulunan nesne sayısının artması ile birlikte sayfanızın yüklenmesi için gereken süre de artmaktadır. Bunun bir sebebi de, çoğu web tarayıcısının bir alan adından aynı anda en fazla iki objeyi yükleyebilmesidir. (HTTP 1.1 Spesifikasyonları http:///www.w3.org/Protocols/rfc2616/ ) Ancak sayfanızdaki içeriği değiştirmeden yüklenmesi gereken nesne sayısını indirmek için uygulayabileceğiniz bazı teknikler de var.
- Birden fazla script dosyasını tek dosya halinde kayıt edin.
- Birden fazla stil dosyasını tek dosya olarak kayıt edin.
- Arka fon veya ikon olarak kullandığınız birden fazla dosyatı tek bir dosya olarak kayıt edin (CSS Sprite : htt://alistapart.com/articles.sprites)
2 - İçerik Dağıtım Ağlarını Kullanmak
Akamai, LimeLight, Savvis gibi içerik dağıtım ağlarını kullanmak sitenizin performansını yüksek oranda arttırabilir. İçerik dağıtım ağları dünya çağında sunuculara sahip olup, statik içerikleri ziyaretçinizin bulunduğu coğrafyaya en yakın sunucudan göndermek suretiyle dikkate değer bir performans avantajı sağlar. Aynı zamanda yedekleme, önbellekleme vb özellikler de diğer avantajlar arasındadır.
3 - Expires başlık bilgisini kullanmak
Zitaretçiler bir siteye geldiklerinde, tarayıcı yüklediği her objeyi kullanıcın bilgisayarındaki ön bellek bölgesinde kayıt eder. Ziyaretçi siteye tekrar geldiğinde tarayıcı bu içeriklerin Expires başlık bilgisine bakarak hangilerinin tekrar yüklenmesi gerektiğini kontrol eder ve sadece gereken içeriği tekrar sunuculardan yüklemeye çalışır. Sitenizi hazırlarken içerikler için Expires başlık bilgisini gerektiği şekilde ayarlayarak sabit içeriğin tekrar yüklenmesini engelleyebilir, dolayısıyla sayfalarınızın çok daha hızlı yüklenmesini sağlayabilirsiniz.
4 - GZip sıkıştırma kullanmak
Sunucular arasında transfer edilen veri miktarı da sayfaların yüklenme hızını belirleyen en önemli faktörlerden biridir. Verilerin transferi esnasında GZip sıkıştırma teknikleri kullanılarak transfer edilen veri miktarı %70 e varan oranda azaltılarak performans kazanımı sağlanabilir.
5 - Stil referanslarını sayfanın başlangıcında vermek
Stil dosyaları tarayıcıya sayfanın hangi şekilde gösterilmesi ve biçimlendirilmesi gerektiğini bildirir. Stil dosyalarına olan referansların sayfanın sonuna konması halinde ise sorun şudur : Sayfanın sonuna gelip stil dosyalarını yükleyene kadar, önceden yüklenmiş olan sayfa tarayıcıda nasıl gösterilmelidir?
Bu sorunun cevabı tarayıcıdan tarayıcıya değişmekle birlikte Internet Explorer için şudur: Sayfadaki tüm stil dosyaları yüklenene kadar ekranda birşey gösterme! Tabi bu durum kullanıcıya sunucunuz sayfayı göndermi bile olsa, en sondaki stil dosyası da yüklenene kadar beyaz ekran gösterilmesi, dolayısıyla kullanıcının sayfanın yavaş olduğu izlenimine kapılması demektir.
FireFox ise sayfa içeriğini öncelikle stilsiz gösterip, stillerde olan her değişiklik için ekranı tekrar çizerek de değişimleri gösterir. Bu da sayfanın tekrar tekrar kisaca kaybolup tekrar görünmesine sebep olur. Bu durum da ziyaretçi için oldukca rahatsız edicidir.
- Birden fazla script dosyasını tek dosya halinde kayıt edin.
- Birden fazla stil dosyasını tek dosya olarak kayıt edin.
- Arka fon veya ikon olarak kullandığınız birden fazla dosyatı tek bir dosya olarak kayıt edin (CSS Sprite : htt://alistapart.com/articles.sprites)
afs |