GZIP nedir, GZIP sıkıştırma nasıl yapılır?
GZIP Sıkıştırma, sitenizi hızlandırmak ve bant genişliği kurtarmak için basit ve etkin bir yoldur. Sitenizdeki javascript dosyalarını GZIP sıkıştırma yöntemi ile optimize ederek sitenizi oldukça hızlı bir hale getirebilirsiniz. Çoğu modern tarayıcı GZIP sıkıştırmayı destekler.
Ayrıca Google ve Yahoo’da gezip sıkıştırma kullanıyor. Modern bir tarayıcının ihtiyacı modern web içerikleri ve modern bir site hızı, işte gzip kodlaması da budur. Hadi nasıl ayarlayacağımıza bakalım.
Gzip sıkıştırma nedir?
Başlamadan önce içerik içerik kodlamasının ne olduğunu açıklamalıyım. Örneğin https://www.kartal24.com/robots.txt gibi bir dosyayı talep ettiğinizde tarayıcınız web sunucusu ile iletişim kurar.
Sistem çalışıyor olsa da verimli değildir. Her html, table ve div etiketi bir kapanış etiketine sahiptir ve bu çoğunlukla aynıdır. Kelimeler belge boyunca tekrarlanır. Peki bir dosya çok büyükse ne yapabiliriz? Sıkıştırmak!
Eğer yalın bir index.html dosyası yerine bir .zip dosyasını (index.html.zip) tarayıcıya gönderebilirsek bant genişliği ve indirme zamanını kısabiliriz. Tarayıcı sıkıştırılmış dosyayı indirebilir ve onu açıp kullanıcıya sunabilir. Kullanıcı da sayfa çabuk açıldığı için mutlu olur. Tarayıcı ile sunucu iletişimi aşağıdaki gibi olabilir:
Formül çok basit: daha küçük dosya = daha hızlı indirme = mutlu kullanıcı. İnanmıyor musunuz? Yahoo’nun ana sayfası 442kb iken sıkıştırmadan sonra 19kb olarak geliyor.
Gzip sıkıştırma nasıl yapılır?
Sıkıştırılmış dosyanın tarayıcıda gösterilmesi iki aşamada tamamlanan bir anlaşmadır.
- Tarayıcı bir başlık göndererek hangi sıkıştırılmış içeriği (gzip ve deflate, iki sıkıştırma düzeni) kabul ettiğini söyler:
Accept-Encoding: gzip, deflate
- Sunucu eğer içerik gerçekten sıkıştırılmışsa bir cevap gönderir:
Content-Encoding: gzip
Eğr sunucu içerik sıkıştırma cevap başlığı göndermezse, dosya sıkıştırılmamış anlamına gelir (çoğu sunucuda varsayılandır). “Accept-encoding” başlığı tarayıcıdan yapılan bir istektir, bir emir değildir. Eğer sunucu sıkıştırılmış içerikle geri dönmezse tarayıcı sıkıştırılmamış büyük haliyle yetinmek zorunda kalır.
Sunucuda Gzip ayarları nasıl yapılır?
İyi haber şu, tarayıcıyı kontrol edemeyiz ama onun yerine Accept-encoding: gzip, deflate başlık yollar veya yollamayız. Bizim işimiz sunucuyu ayarlamak, eğer tarayıcı istiyorsa sıkıştırılmış içerik sunmak. Böylece bant genişliği kurtarıp mutlu kullanıcılara sahip olmak.
Apache’de, sıkıştırmayı etkinleştirmek için aşağıdaki kodu .htaccess
dosyasına ekleyin:
Apache mevcutta iki sıkıştırma seçeneğine sahiptir.
- mod_deflate varsayılandır ve ayarlaması kolaydır.
- mod_gzip daha güçlü görünür: önden sıkıştırma yapabilirsiniz.
Her iki durumda da, eğer tarayıcı “Accept-encoding” başlığı gönderdiyse Apache kontrol ederek dosyanın sıkıştırılmış veya normal versiyonu ile dönüş yapar. Her neyse bazı eski tarayıcılar bazı sorunlara gebedir ve bunun için bazı özel direktifler vardır. Bunları da ekleyebilirsiniz.
Eğer .htaccess
dosyanızı düzenleyemiyorsanız, PHP
kullanarak sıkıştırılmış içerik oluşturabilirsiniz. HTML
dosyanıza bir .php
ek ekleyerek dosyanın en üstüne alttaki kodu ekleyin:
PHP’de !--
ve !--
çizgileri kaldırarak alttaki kodu kullanabilirsiniz:
Böylece “Accept-encoding” başlığını kontrol edip dosyanın bir sıkıştırılmış sürümünü sunarız (yoksa da durumda normal sürümü). Eğer yapabiliyorsanız bu işlem için Apache kullanın. Tek tek her dosyada uğraşmak gerçekten kötü olur.
Gzip sıkıştırma kontrol etmek
Sunucunuzu ayarladıysanız sıkıştırmanın doğru çalıştığını kontrol edebilirsiniz.
- Online: online gzip test sitesini kullanarak kontrol edin.
- Tarayıcıda:
Web Developer Toolbar > Information > View Document Size
(yukarıda Yahoo için yaptığım gibi) kısmına bakarak sayfanın sıkıştırılmış olup olmadığına bakın. - Headere bakın: Live HTTP Headers kullanarak kontrol edin. “Content-encoding: gzip” şeklinde görülmeli.
Gzip hakkında dikkat edilmesi gerekenler
Ne kadar heyecan verici görünse de, HTTP sıkıştırma tamamen müthiş değildir. İşte bakmanız gerekenler:
- Eski tarayıcılar: Evet bazı tarayıcıların Gzip ile ilgili sorunları olabilir (sıkıştırılmış dosyayı kabul ettiklerini söyleyip aslında bunu yapamazlar). Eğer ziaretçilerinizin çoğu Windows 95 üzerinde Netscape 1.0 kullanıyorsa, HTTP sıkıştırma kullanmamalısınız. Apache mod_deflate eski tarayıcılar için daha uygundur.
- Zaten sıkıştırılmış içerik: Çoğu resim, video ya da mp3 zaten sıkıştırılmıştır. Onları tekrar sıkıştırmak için zaman harcamayın. Sadece 3 büyükler (HTML, CSS ve Javascript) için sıkıştırma yapmak daha hızlıdır ve doğrudur.
- CPU: Sıkıştırılmış içerikler CPU ve bant genişliği kurtarır. Statik içerikleri önceden sıkıştırmak daha akıllıcadır.
Sıkıştırmayı etkinleştirmek sitenizi hızlandırmak için en önemli şeydir. Hiç düşünmeyin ve zaman kaybetmeden bunu yapın.