+ Yanıtla
Toplam 5 sonuçtan 1 ile 5 arası olanlar

Konu Başlığı: Tasarımcılar için sunucu taraflı optimizasyon

  1. #1

    Tasarımcılar için sunucu taraflı optimizasyon

    Başlığımız biraz kafa karıştırıcı cinsten olsa da, web sitelerinin açılış hızı, sunucuların yükü (yani web sitenizin aynı anda daha fazla istemci kabul etmesi) büyük oranda bu tür bir optimizasyonun yapılması ile en iyi seviyeye çekilir ve maalesef ki web projelerinin optimizasyonunda bu kısım bilinmediği için çoğunlukla es geçilir. Bir web projesinde CSS/XHTML/JavaScript ve benzeri işleri siz yapıyorsanız burada anlatılanlar tam size göre. Evet siz doğrudan ne betik dili ile yazılmış bölümlere ne de sunucu ayar dosyalarına ulaşmıyor ve onları kullanmıyor olsanızda sunucu taraflı optimizasyonda sizlerin doğrudan katkısı sanılanın aksine çok büyük.

    Amaç
    Bu tür optimizasyondaki yegane amaç istemcinin (client, izleyen, ziyaretçi) sunucuya yaptığı istekleri (request) en düşük sayıya indirmektir. Çünkü istemcinin her isteği sunucuda ya bir fazladan sürecin (process, işlem) çalışması, ya da var olan sürecin kullandığı kaynağın bir kısmını tahsis etmesi demektir. Her iki şekilde de sunucu bu isteğe kaynak ayıracaktır.

    Başlangıç Noktası
    Her şeyden önce bilinmeli ki, kaynak kullanımı ile bant genişliği kullanımı tahterevallinin farklı uçlarındadır. Eğer yapılan proje sunucu kaynaklarını çok tüketiyorsa (çok fazla istemci varsa veya olacağı öngörülüyorsa) ve bant genişliği kaynağı sonuna kadar kullanılmıyorsa kaynak-duyarlı bir optimizasyon yapmamız gerekir. Peki nasıl karar verebilirsiniz?

    1 - web istatistiklerine bakarak: Eğer yeni gelen ziyaretçileriniz, eski ziyaretçilerinize oranla yüksekse,
    2 - Sunucu yük durumuna bakarak: Eğer barındırma şirketiniz web sitenizin sürekli çok kaynak tükettiğinden -bilmemne- sınırını aştığından bahsedip duruyorsa,
    3 - Sitenizin açılış hızından rahatsız iseniz,
    4 - Aynı an içerisinde daha çok ziyaretçinizin olmasını ısrarla istiyor ve bant genişliğine çok fazla önem vermiyorsanız,
    5 - CSS / HTML vb. kodlarınızı sürekli değiştirmiyorsanız ,

    sıralanan seçeneklerden iki veya daha fazlası size uyuyorsa, bu optimizasyonu yapmalısınız.

    Varsayılan web projesinin içeriği
    web sitenizin HTML kodlarında 5 CSS, 2 JavaScript ve 10 resim dosyası olduğunu, bu 5 CSS’in içerisinde ise toplam olarak 20 adet arkaplan için kullanılan resim olduğunu varsayalım.

    Kolları sıvamadan önce bilmeniz gerekenler
    Hop: Bir istek, istemciden sunucuya ulaşırken bir çok bilgisayar üzerinden atlayarak gider. Bu atlamaların her birine hop denir ve milisaniyeler ile ölçülen bir zamanda gerçekleşir. Hopta kaybedilen zamanın sebebi, her isteğin üç aşama için zaman harcamasıdır, 1-bağlanma zamanı, 2-sunucunun isteği işlemesi için geçen zaman, 3-sunucu ile istemci arasındaki veri transferi için geçen zaman. Çok istek yapıldığında doğal olarak geçen zamanda çok olacaktır.

    Sabit Kaynak: Sunucu, isteğin içeriği ne olursa olsun, sunucuda ister bir servis çalışsın ister çalışmasın kesin olarak her istek için belirli bir kaynak ve zaman ayırmak zorundadır. Çok detaylandırmadan zaman kaybını açıklamak gerekirse, istekler TCP ile iletilir ve bu protokolde durum belirteci bulunmaz, daha doğrusu durum belirteci belirli zaman aralıkları ile varmış gibi kabul edilir, (daha detaylı bilgi için TCP, SYN , ACK, FIN anahtar kelimelerini Google’a sorabilirsiniz) işte bu zaman aralığında sunucu, o istek için belirli bir kaynak tahsis etmek zorundadır, bunada sabit kaynak denir. (en azından bu yazıda biz öyle diyoruz )

    İlk adım: toparlama
    Siteyi ilk defa ziyaret eden (veya önbellek-cache kullanmayan) istemci, siteye ulaştığı an sunucuya toplamda (varsayılan içeriğe göre) 37 adet istek gönderir. Yani her istek, sunucuya belli bir hoplama sayısında ulaşacak ve veriyi gene bir o kadar hop ile geri alacaktır (ilk zaman kaybı) üstelik her istek için sunucu sabit bir kısım kaynağını ayıracak, işlemin içeriğine göre de bu kaynak tahsisini yükseltecektir (kaynak israfı ve ikinci zaman kaybı). Halbuki biz CSS dosyalarımızı birleştirirsek, yani 5 CSS dosyasını 1 CSS dosyası olarak birbirilerine ekleyerek kaydedersek, otomatik olarak 4 adet isteği engellemiş, zamandan ve kaynaktan tasarruf etmiş oluruz. Aynı şekilde JS dosyalarımızı birleştirerek 37 adet olan istek sayısını 32’ye düşürürüz.

    İkinci adım: CSS özelliklerini kullanarak resim sayısını azaltmak
    Hepimizin bildiği gibi bazı CSS özelliklerini kullanarak bir arkaplan resminin sadece belirli bir bölümünün görünmesini sağlayabiliyoruz. Mesela CSS dosyamızın içinde yuvarlak kenarlar için kullandığımız 4 adet yuvarlak köşe olduğunu düşünürsek, CSS kodları ile bu 4 resmi birleştirip hangi köşe ise ona göre o kısmın gözükmesini sağlayabiliriz. Gene aynı şekilde CSS menümüz için kullandığımız 4 ayrı resmi + 4 ayrıda :hover için resmi , bir resimde birleştirip CSS kodları ile neyin-nerede gözükeceğini ayarlayabiliriz. Böylece varsayılan içeriğe göre, 10 istekten daha kurtulup istek sayısını 22’ye düşürmüş oluruz.

    Seçimli son adım: benim bandım çok, kaynağım yok!
    İlk iki adım size yeterli gelmedi mi? Öyleyse dosyalarınızı “<link> veya import” ile kodlara yerleştirmek yerine, doğrudan içine gömün. Böylece en az kaynağı kullanıp en çok bant genişliği kullanımını sağlamış olursunuz.

    Bu işlemleri yaparak sitenizin hızında ve sunucunuzun kaynak tüketiminde gözle görülür bir iyileşme sağlayabilirsiniz. Tahmini bir örnek olarak bu forumu yani forum.zoque.net’in anasayfasını ele alırsak, (dışarıdan çağırılanlar hariç) 5 adet JS dosyası ve 2 adet CSS dosyasını, 1 JS ve 1 CSS haline getirdiğimizde, sunucuyu 5 fazla istekten kurtarmış oluruz , her dosya için istek hoplamadığı için de ~7 saniye olan açılış süresini ~5 saniyeye çekebiliriz. Verilen örnekler, varsayılan özellikler ve tahminler elbette birebir örtüşmeyebilir, ancak asıl amacı anlatabildiğimi düşünüyorum, uygulamalarınızda başarılar dilerim

  2. #2

    Re: Tasarımcılar için sunucu taraflı optimizasyon

    Bence böyle önemli bir yazıyı cümle kalabalığına boğmaktansa bazı nesnel sayısal verilerle daha reel hale getirebilirdin. mesela bu teknikleri uygulamadan önceki ve sonraki hız, değerler, vs. Yazın daha gerçekçi ve çeşitli örneklerle süslenseydi insanlar bu yaklaşımı neden uygulayacaklarını okumuş olurdu. Benim aklıma ilk basın ve medya kuruluşlarının sitelerinin böyle bir optimizasyonla ne kazanacakları örneği geliyor. Ama elbette paylaştığın bu bilgiler, eminim yeni başlayan insanlara biraz ışık tutacaktır. Ellerine sağlık...

  3. #3

    Re: Tasarımcılar için sunucu taraflı optimizasyon

    Tasarımcılar için olduğundan sayıları pek kullanmak istemedim. Eğer pratikteki sonuçları biri merak ederde yazılanları yapıp somut bir veri sunar, yazıya katkıda bulunur, yazının niteliği ile ilgili karşı görüşlerde bulunur oturur tartışırız yazıyı geliştiririz diye düşünmüştüm -hala düşünüyorum. Yoksa zaten tam anlamıyla dört dörtlük bir anlatım olması için daha başka eksikleride var.

  4. #4

    Re: Tasarımcılar için sunucu taraflı optimizasyon

    Geçenlerde ben de yüksek trafikli web sayfası performans optimizasyonu diye derinlemesine araştırmıştım. Bahsettiğin konulardan output caching'e, JavaScript yerleşiminden statik dosya sunucularına, paralel routing'e kadar girdim.

    Her zamanki gibi yapılacak işler hiç bitmediğinden bu konuda bir makale veya Türkçeleştirme yazmak aklıma bile gelmedi. Kendi bloğumu bir gün açıcam ama hadi hayırlısı.
    Spoiler:
    imzaya sponsor?

  5. #5

    Re: Tasarımcılar için sunucu taraflı optimizasyon

    Ellerinize sağlık. Sevgili Volan Görgülü http://www.webdesignerwall.com/gener...for-designers/ yazısını da Türkçeleştirerek SiberKültür'de yayınlamıştı:

    http://www.siberkultur.com/?q=tasari...izasyonu-nedir

    Konuyla ilgili olabilir.
    SiberKültür.com,
    css'in hastası, web'in ustasıyız

+ Yanıtla

Bu konu başlığı için etiketler

Mesaj Seçenekleri

  • Yeni başlık açamazsınız
  • Cevap yazamazsınız
  • Dosya ekleyemezsiniz
  • Mesajlarınızı değiştiremezsiniz