Arşiv sayfasından bütün yazılarıma ulaşabilirsiniz

Prototype.js Dosyasını %80 Daha Hızlı Yükletmek

Prototype.jsPrototype.js, kullanmaktan keyif aldığım bir JavaScript kütüphanesidir. Geçtiğimiz günlerde 1.5.1 sürümü yayınlandı. Bu sürüm yeniliklerin yanında, düzeltmeler ve optimizasyonlar da içeriyor. Buraya kadar herşey iyi güzel ama benim canımı sıkan bir durum var :( O da her yeni sürümde Prototype.js dosyasının boyutunun giderek artması. İşte bu yüzden, boyutunu küçültmek adına bir-kaç yöntem kullanmaya karar verdim. Bu yöntemleri size de anlatmak istiyorum ;)

Prototype.js 1.5.1

Prototype.js kütüphanesinin en yenisi olan 1.5.1 sürümünü buradan indirebilirsiniz. Göreceğiniz gibi bu sürüm 93,7 kilobayt civarında. Bir önceki sürüm olan 1.5.0 ise 69,5 kilobayt idi. Yuvarlak bir hesapla 25 kilobaytlık bir artış söz konusu ki bu bence ciddi bir artış. Fakat birazdan uygulayacağımız iki basit adımla 93,7 kilobaytlık Prototype.js dosyasını 19 kilobayta küçülteceğiz :)

1. Yorum satırlarını ve boşlukları temizleyelim

JS MinifierPrototype.js dosyası biz kullanıcılarına ham haliyle sunuluyor. Böyle olunca dosya içerisinde yorum satırları, boşluklar, sekme boşlukları da yer alıyor. Başta önemsiz gibi görülebilir ama yorum satırlarını ve boşlukları dosya içerisinden attığımızda %25'li bir kazancımız oluyor. 93,7 KB olan dosyamız bir anda 70 KB boyutuna düşüyor. Hiç de fena sayılmaz öyle değil mi?

Gelelim bu işlemi nasıl yapabileceğimize. İlk adımda JS Minifier isimli uygulamanın web sayfasına giriyoruz. Prototype.js dosyasındaki tüm kodları kopyalayıp olduğu gibi Code alanına yapıştırıyoruz. Hemen bu kutunun altındaki Level menüsünden conservative seçeneğini seçip JSMin butonuna tıklıyoruz. Biraz bekledikten sonra Output alanında kodun temizlenmiş hali oluşturuluyor. Bu kutudaki kodu aynen kopyalayıp yeniden prototype.js dosyasına yapıştırıyoruz.

2. Temizledikten sonra bir de sıkıştıralım

1. adımdaki temizlik işleminden sonra şimdi de prototype.js dosyasını gerçek zamanda sıkıştırmayı deneyeceğiz. Bunun için Apache ve PHP ikilisini kullanan bir host paketinizin olması ve Apache web sunucusunun mod_gzip modülünün aktif olması gerekiyor. Bu şartlar sağlandığında prototype.js dosyasını gzip sıkıştırma yöntemi ile sıkıştırabileceğiz. Böylece 1. adımda 70 kilobayta düşen prototype.js dosyasını 19 kilobayta düşüreceğiz.

Bu işlem için öncelikle ismi prototype.js olan dosyamızı prototype.js.php olarak yeniden isimlendiriyoruz. Daha sonra dosyayı açıyoruz ve en başına alttaki kodları yerleştiriyoruz.

PHP:
  1. <?php
  2.   ob_start ("ob_gzhandler");
  3.   header("Content-type: text/javascript; charset: UTF-8");
  4.   header("Cache-Control: must-revalidate");
  5.   $sure = 60 * 60 * 24 * 365; // 1 yıl
  6.   $SonaErme = "Expires: " .
  7.     gmdate("D, d M Y H:i:s",time() + $sure) .
  8.     " GMT";
  9.   header($SonaErme);
  10. ?>

İşte hepsi bu kadar. Bundan böyle web sayfalarımızda prototype.js kütüphanesini kullanmak istersek alttaki gibi bir çağırma yapmamız yeterli olacaktır.

JAVASCRIPT:
  1. <script type="text/javascript" src="prototype.js.php"></script>

Sonuç

Eğer buradaki yöntemleri kullanmamış olsaydık prototype.js dosyası 93,7 KB olarak yüklenecekti. Fakat bu iki yöntem sayesinde artık prototype.js dosyası yalnızca 19 KB olarak yüklenecektir. Bu da dosya boyutunun yaklaşık olarak %80 küçülmesi demek. İster istemez insanın içerisinden 93 KB nerdeeeee, 19 KB nerde demek geliyor :D

Firebug ile analiz 1
Firebug ile analiz 2
EkleBunu Sosyal Paylaşım Butonu

13 yorum var

  1. güzel makale teşekkürler eburhan :)

  2. Şaşırtıcı, boşlukların dahi bu denli yer kaplayacağını zannetmezdim. Rahat kodlamayı sevenlerden olduğumdan bol bol kodlar arasında aralık bırakırdım. Artık aralıklara paydos :)

  3. İyi iş Erhan ;)

    Günlüğünü okuyan ve optimize ile ilgili yaptıklarını biraz PHP ağırlıklı olarak anlatan bir sunumu iliştireyim buraya.

    Boosting The Performance of Your PHP Applications

    Herkese iyi çalışmalar…

  4. Benim yazdığım bu yazının bir benzerini yazmışlar :)

    Buradan ulaşabilirsiniz.

  5. gerçekten süper bir yazı olmuş. çeviri sanırım ama emeğe saygı. gerçekten web 2.0 camiasına büyük bir katkıdır bu. mySchoolog’da kullanmaya başlıyorum en kısa zamanda.

  6. Yazıyı beğendiğine sevindim. Yalnız çeviri bir yazı değildir bu. Çeviri olduğu zaman yazıların altına yazıyorum zaten. Burada olduğu gibi.

  7. güzel bir yazı ama prototype.js nizi editliyorsanız (benim gibi) eh biraz zor olur :)

  8. Çok güzel yazı tebrikler, ancak IIS Win Server 2003 PHP de bu sıkıştırma işi nasıl yapılır?

  9. IIS konusunda bilgim yok ama gzip sıkıştırması için buradaki sayfaya bir gözatın derim.

  10. Merhaba Erhan,
    HTTP Compression IIS’ de server yönetiminin açması gerekiyor, ASP.ASP.NET, PHP ve IIS altında çalışan her formatta işe yarıyor.. Tabi server yönetimi açarsa ki benim ki açmıyor.. CPU’ ek yük.! mod_gzip apache modülü ancak apache üzerinde çalışıyor. sanırım IIS PHP de deteklenen bir modül yok. Tşk.

  11. bu Prototype.js tam olarak ne işe yarıyor nerelerde kullanabiliriz bunu peki? keşke bunu anlatsayın sitesine bulamadım da

  12. @Tunc
    Prototype.js ile ilgili çok ayrıntılı bir yazıyı http://ajax-tr.com/category/hazir-kutuphaneler/ adresinde bulabilirsin.

  13. Abi çok teşekkürler uzun süzedir arıyorum nasıl göremedim yazıyı :( acaba diğer dosyalarda da kullanılabilir mi php css dosyalarında. bir de bazı script dosyalarında görüyorum sıkışmış ip gibiler :) tek satırda kodlar nasıl yapılıyor ?

İçinizde kalmasın, siz de yorum yazın.