2
Ağustos
2009

Gzip Sıkıştırması ile Sitenizi Hızlandırın

Gzip bir çeşit sıkıştırma algoritmasıdır. Web açısından baktığımızda gzip, özellikle HTML, CSS ve JS gibi metin tabanlı dosyalarda çok ciddi derecede sıkıştırma sağlayan bir sıkıştırma yöntemidir. Birçok web sunucusu ve güncel tüm tarayıcılar (ile web robotları) gzip sıkıştırmasını desteklemektedir.

Sıkıştırma Konusunda Anlaşmak

Siz bir web sayfasını açmak üzere tarayıcınıza tıkladığınızda, arkada bir çok şey olur. Bunlardan biri de, isteğin hangi formatta olacağına karar verilmesidir. Bir web sayfası açmaya çalıştığınızda tarayıcınız sizin için aşağıdakine benzer bir bilgi gönderir:

(Request Header)
sample-request-header

Burada gönderdiğiniz bilgilerden Accept: */* ve Accept-Encoding: gzip,deflate satırlarına dikkatinizi çekmek istiyorum. Accept, istemcinin (yani tarayıcınızın) kabul ettiği MIME (Multipurpose Internet Mail Extensions) tiplerini, Accept-Encoding ise kabul ettiği kodlama biçimlerini gösterir.

Tarayıcınız sizin adınıza gzip ve deflate algoritmaları ile sıkıştırılmış verileri kabul ettiğini gönderiyor. Karşıdaki sunucu da (eğer bu sıkıştırmayı destekliyorsa) size verileri sıkıştırarak gönderebilir. Sunucu, veri aktarımından önce aşağıdakine benzer bir bilgi gönderir:

(Response Header)
sample-response-header

Burada Content-Type ve Content-Encoding satırlarına dikkat etmenizi istiyorum. Content-Type ile dönen verinin MIME tipinin text/html olduğu ve bu dosyanın UTF-8 ile kodlandığı belirtilmiş ve ardından Content-Encoding ile de gelen verinin hangi algoritmayla sıkıştırıldığı gönderilmiştir.

Anlaştık Sanırım

Yukarıdaki kısımda görülebileceği üzere, tarayıcı hangi tipleri algılayabildiğini göndermiş, sunucu destekliyorsa cevabını bu algoritmalardan biriyle sıkıştırarak göndermiş ve fiber optik kablolar daha az veri taşıdığı için mutlu olmuşlardır. Siteniz daha hızlı açıldığından okurlarınızda kocaman bir gülümseme oluşurken, siz de ay sonunda bandwidth kullanımınızın azaldığını görünce onlara katılırsınız.

Ne Kadar Sıkıştırıyor?

Gzip, özellikle metinlerde etkili bir algoritmadır. Aynı zamanda sıkıştırma/açma hızı yüksek bir algoritma olduğundan sıkça tercih edilir. Ben veritabanı yedeklerimi sunucumdan gzip ile sıkıştırılmış olarak çekiyorum. 30 Megabaytlık bir veri tabanını (SQL, metin formatında) 7 MB’a sıkıştırdığını kendim biliyorum. Web’de CSS, HTML ve JavaScript dosyalarında bu kadar sık kullanışmasının nedeni de tam olarak bu performans. =)

Nasıl Aktifleştiririm?

Sunucunuzda gzip sıkıştırması kullanmak için pek çok yöntem vardır. Bu yazıda Apache ve uyumlu sunucular (mesela Litespeed) için, .htaccess dosyaları ile bu özelliği açmak anlatılacak.

Sitenizin kök klasöründeki .htaccess dosyasını açın. (Yoksa kendiniz yaratın.) Daha sonra gzip sıkıştırmasını açmak için bu dosyanın en üstüne aşağıdaki kodu kopyalayın ve dosyayı kaydedin.

   SetOutputFilter DEFLATE

Bu kod, sitenizdeki js ve css uzantılı dosyalar için gzip sıkıştırmasını açacaktır. Yukarıdaki kodda neden php uzantısının neden olmadığını merak etmişsinizdir muhtemelen. Bu dosyaların çıktısı PHP ile dinamik olarak oluşturulduğu için, sıkıştırılması PHP da ile ayarlanır. Bununla ilgili bilgi almak için şuraya ışınlanabilirsiniz. PHP’de ob_gzhandler kullanımı artık tavsiye edilmemektedir.

Yukarıdaki kodu .htaccess dosyanıza ekledikten sonra 500 Internal Server Error hatası alıyorsanız ya da bir gariplik olduysa sunucnuzda mod_deflate veya
mod_ext_filter eklentisi yüklü olmayabilir. Bu durumda sıkıştırmayı (en azından benim anlattığım yöntemle) yapamazsınız. Hosting şirketinizin başının etini yemeniz şiddetle önerilir.

Daha da Gelmem

Dilerseniz aşağıdaki .htaccess kodlarını da ekleyerek sitenizde ufak birkaç iyileştirme daha yapabilirsiniz:

ExpiresActive On
ExpiresDefault A604800
Header append Cache-Control "public"

Bu kod, aksi belirtilmediği halde gönderilen bilginin tarayıcı tarafından ön belleğe atılmasını ve bir hafta geçerli olmasını sağlar. (Böylece fotoğraflar ve görseller her seferinde sunucunuzdan yüklenmek zorunda kalmaz.)

   AddDefaultCharset UTF-8
   DefaultLanguage tr-TR

Bu kod, belirtilen uzantılı dosyalar için aksi belirtilmediği halde varsayılan dilin Türkçe ve karakter kodlamasının UTF-8 olmasını sağlar. (Bunlar HTTP Header bilgileridir, HTML Head meta taglarını siz ayarlamalısınız. Tarayıcılar HTML Meta Charset ile HTTP Header Charset uyuşmadığı takdirde hangisini kullanacakları konusunda farklı tepkiler verirler.)

Bitirirken

Bugünlük bu kadar. İyi geceler efendim.

bu yazı 6.180 defa okundu

Site hoşunuza gitti mi? Belki arkadaşlarınızın da gider.

İstekli

Aaa Reklam

+ Yorumunuzu Ekleyin 30 yorum

  • Fırat Deveci 03 Ağustos 2009 02.26

    Hemen deneme moduna geçiyorum :D

  • Caner 05 Ağustos 2009 03.47

    gzip’e bayılırım, o kadar ki her kahvaltıdan önce en az iki gzip işlemi gerçekleştiremezsem o gün rahat edemem. En çokta serverdan servera koca siteleri taşırken bayılırım kendisine, tadından yiyemem. Ona istinaden zip’i de pek severim, bir host üzerinde yapmaktan en çok hoşlandığım işlemlerden biri tir. Ayrıca gecenin bir yarısı UB’nin sitesine girip akıl ve mantık süzgecinden geçmemiş yorumlar yapmakta en çok hoşlandıklarım arasındadır :)

    • Umut 05 Ağustos 2009 03.49

      @Caner: Ben de yorum onaylamaya bayılırım gecenin bir yarısı. :) )

  • Caner 05 Ağustos 2009 04.01

    Vay be, hepimiz mi böyleyiz arkadaş yarasa gibi gece yaşıyoruz :)

    • Umut 05 Ağustos 2009 04.02

      Gündüz sıcaktan beynim buharlaşıyor. :) Onun için geceyle gündüzü değiştiriyorum artık.

  • ali furkan 26 Ağustos 2009 11.44

    Gerçekten güzel anlatmışsın faydalı bir makale olmuş, tebrik ederim.

  • [...] İlk olarak GZip sıkıştırmasından bahsetmek isterim. Bu yöntem hakkında daha fazla bilgiyi bu sayfadan [...]

  • [...] bildiğimiz winzip olayı değil. Sitenizin daha hızlı açılmasını sağlayacak bir eklenti. http://www.ubenzer.com/gzip-sikistirmasi-ile-sitenizi-hizlandirin/bu adresde ayrıntılı [...]

  • tra 27 Ağustos 2010 01.28

    eet bende hemen uygulamaya geçiyorum çok güzel bir bilgi tşk ederim

  • Soul 05 Eylül 2010 09.04

    Peki bu “ExpiresActive On…” işlemini mesela birçok dosyanın bulunduğu bir klasörde, o dosylardan sadece birine nasıl uygulayabilirim. Örn: klasörde a.gif, b.gif, c.gif var ben sadece b.gif’e uygulamak istiyorum. Şimdiden teşekkürler…

    • Umut 05 Eylül 2010 14.03

      @Soul:

      SetOutputFilter DEFLATE

      kısmındaki FilesMathc kısmına, sadece sıkıştırılmasını istediğiniz dosyalarını yazmalısınız. Ancak syntax olarak yazılımı nasıl bilmiyorum. Apache ve .htacess FilesMatch olarak Google’da aratarak yazımına bakmak gerekiyor.

  • oyun 05 Eylül 2010 10.07

    ben yapamadım dediklerinizi uyguladığım halde yardımcı olurmusunuz

    • Umut 05 Eylül 2010 14.01

      @oyun: Neresinde takıldığınızı anlamamı nasıl bekliyorsunuz?

      • motor oyunları 29 Ekim 2010 00.36

        dediklerinizi tek tek yaptım fakat chrome deki eklentiden baktığımda gzip sıkıştırmasının hala etkin olmadığını gördüm wordpress eklentisi ile sorunu aştım. win sunucularda bunlar yapılıyor mu

      • Umut 29 Ekim 2010 00.46

        Windows üzerindeki Apache'de yapılıyor. Ancak diğer sunucular konusunda bir bilgi sahibi değilim.

  • ismail 07 Ekim 2010 19.14

    anlatım güzel ben kullanıyorum ama seo analizlerden baktıgımda kullanılmıyor gözüküyor sitemde nedenini anlamadım

  • davetiye 15 Kasım 2010 02.31

    teşekkürler deneyelim bir

  • [...] http://www.ubenzer.com/gzip-sikistirmasi-ile-sitenizi-hizlandirin/ [...]

  • BilgiSpot 23 Ocak 2011 11.36

    Size bir sorum var. Gzip sıkıştırmasını blogger de yapabiliyormuyuz. Lütfen cevap verin. Çok önemli.

    • Umut 23 Ocak 2011 19.42

      Hayır. En azından burada anlatılan yöntemle yapamazsınız.

  • Ahmet KAYAR 19 Haziran 2011 13.48

    Yöntem çok güzel cidden işe yarıyor sistemlerim performanslerı arttı çok teşkkür ederim.

  • elshad 04 Ağustos 2011 11.42

    supersin hocam.davami gelsin

  • Samet 19 Ağustos 2011 23.14

    Dostum çok teşekkürler, wordpress kullanıyorum ve bu aralar kafamı kurcalayan bir meseleydi. Çok teşekkür ederim.

  • Baris 29 Ekim 2011 03.34

    Teşekkürler, aradığım buydu.

  • [...] hazırlamadan önce sayfamın hızını yükseltmek için kaynak olarak kullanmış olduğum “Umut Benzer” ve “e-yazar” bloglarına teşekkürü borç [...]

  • Recep 24 Aralık 2011 21.00

    merhabalar,
    daha da gelmem kısmındaki kodlar nereye eklenecek peki. yine en başa mı?

  • hakan 27 Aralık 2011 15.49

    Hocam super cache eklentisi ile gzip hakkında da bir bilginiz varmıdır? Ben eklentiyi kurup ayarlarından gzip seçtiğimde performans artıyor (pagespeed skoru 99) fakat chrome ve firefox'da sorun olmazken IE tarayıcısı sayfa yerine gzip içeriği olan harf ve rakamlardan başka bir şey göstermiyor. Ziyaretçilerin en az %40'ı IE kullandığı içinde eklentinin bu özelliğini kapatmak zorunda kaldım.

    • Umut 27 Aralık 2011 22.43

      Buna benzer bir sorun ben de yaşamıştım ama işin kötüsü nasıl çözdüğümü hatırlamıyorum. Ancak size fikir olması açısından kontrol edilecek şeyleri söyleyeyim:

      1. Sayfa iki defa gziplenmeye çalışılıyor olabilir. Yani aslında sayfa hatalı kodlanmış, ancak tarayıcıların başarısı dolayısıyla doğru görüntüleniyor olabilir IE diğerlerine göre daha nazik.
      2. Daha olası bir ihtimal, sıkıştırma doğru ancak bilgisi yanlış olabilir. HTTP Headerlarında gelen bilginin sıkışık olduğunun ve tipinin text/html olduğunun doğru bir şekilde belirtilmesi çok önemli. Internet explorer çok büyük bir ihtimalle eksik bir headerdan dolayı gelen veriyi sıkıştırılmış ve açılıp gösterilmesi gereken web sayfasından çok, doğrudan gösterilecek bir şey gibi anlıyor.

  • Ali Veli 08 Ocak 2012 22.04

    Derli toplu ve net anlatımlar her zaman hoşuma gitmiştir. Paylaşımlarınız için teşekkürler.

Yorumunuzu Bırakın

Bu yazıya gönderilen yeni yorumları e-posta aracılığıyla bana bildir
Yeni gönderilenleri yorum yapmadan takip etmek için tıklayınız.

Yorumunuz başarıyla alındı. Onaylandıktan sonra yayımlanacaktır. Teşekkürler.

Twitler yükleniyor... 5 saniye sonra

Bıdı bıdı bıdı bıdı dıdı dıdı dudu dudu hıdı hıdı hödü hödü yüklüyoruz öhüm öhüm bıdı bıdı vs vs... 6 nanosaniye önce

Yüklenmenin geç olmasının sebebi ben değilim, Twitter API'sinin yavaş olması. Gudu gudu hıdı hödö büdü büdü... 25697 asır önce

Ha tabi bunları okumuşsan, bu sitenin çok gizli bir özelliğini bulmuşsun demektir. ;) Tebrikler. Bu "sürpiz yumurta"yı bulduğunu bana da haber verir misin? Tıkla! 6 dinazor önce

Geçen Yıllarda Bu Hafta

2011

Bunun Burada Ne İşi Var?

Bunun Burada Ne İşi Var?

Dün şehre inmek için Sayın Menderes Türel’in zamanında Hafif Metro ...

Windows 7’de Bilgisayarınızın Aldığı Puanı Değiştirin

Windows 7’de Bilgisayarınızın Aldığı Puanı Değiştirin

Biliyorsunuz Microsoft, Windows Vista’dan bu yana bilgisayarlar için bir performans ...

Dördüncü Sınıfın Birinci Döneminden Öğrenci Görüşleri

Dördüncü Sınıfın Birinci Döneminden Öğrenci Görüşleri

Dördüncü sınıfın yarısı bitti. Okuldan mezun olmak üzereyim. İyisiyle kötüsüyle bir ...

UBenzer’den Alın!

UBenzer’den Alın!

Ablam evdeki kullanılmayanları ayırmış, “Umut bunları sat.” dedi. Hazır elime ...

2009

Kısık Işık

Kısık Işık

Tavana asılmış tek beyaz floresan lambayı sevemedim bir türlü… “Ben ...

Antalya Toplu Taşıma Sisteminin Sorunları - 1

Antalya Toplu Taşıma Sisteminin Sorunları - 1

Antalya’da ulaşım bir ölüm. Trafik sıkışıklığı, haftada bir yönü değişen ...

2008

14 Şubat

14 Şubat

Biliyorsun bugün 14 Şubat. Daha iki gün öncesinden hazırdı zaten ...

Uyumadan Önce Son Boşluk

Uyumadan Önce Son Boşluk

Uykuya dalmadan önce düşünürüm… Kötü alışkanlıklarımdan biridir. Aklıma ne gelirse ......

NES Emulatörleri

NES Emulatörleri

Daha önceki şu iki yazımda (1.si, 2.si), çocukken bolca oynadığımız ...

Son Yorumlar