Bunun Burada Ne İşi Var?
Dün şehre inmek için Sayın Menderes Türel’in zamanında Hafif Metro ...
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.
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:
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:
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.
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.
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.
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.
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.)
Bugünlük bu kadar. İyi geceler efendim.
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
Hemen deneme moduna geçiyorum
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
@Caner: Ben de yorum onaylamaya bayılırım gecenin bir yarısı.
)
Vay be, hepimiz mi böyleyiz arkadaş yarasa gibi gece yaşıyoruz
Gündüz sıcaktan beynim buharlaşıyor.
Onun için geceyle gündüzü değiştiriyorum artık.
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ı [...]
eet bende hemen uygulamaya geçiyorum çok güzel bir bilgi tşk ederim
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…
@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.
ben yapamadım dediklerinizi uyguladığım halde yardımcı olurmusunuz
@oyun: Neresinde takıldığınızı anlamamı nasıl bekliyorsunuz?
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
Windows üzerindeki Apache'de yapılıyor. Ancak diğer sunucular konusunda bir bilgi sahibi değilim.
anlatım güzel ben kullanıyorum ama seo analizlerden baktıgımda kullanılmıyor gözüküyor sitemde nedenini anlamadım
teşekkürler deneyelim bir
[...] http://www.ubenzer.com/gzip-sikistirmasi-ile-sitenizi-hizlandirin/ [...]
Size bir sorum var. Gzip sıkıştırmasını blogger de yapabiliyormuyuz. Lütfen cevap verin. Çok önemli.
Hayır. En azından burada anlatılan yöntemle yapamazsınız.
Yöntem çok güzel cidden işe yarıyor sistemlerim performanslerı arttı çok teşkkür ederim.
supersin hocam.davami gelsin
Dostum çok teşekkürler, wordpress kullanıyorum ve bu aralar kafamı kurcalayan bir meseleydi. Çok teşekkür ederim.
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ç [...]
merhabalar,
daha da gelmem kısmındaki kodlar nereye eklenecek peki. yine en başa mı?
Evet en başa olabilir.
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.
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.
Derli toplu ve net anlatımlar her zaman hoşuma gitmiştir. Paylaşımlarınız için teşekkürler.