sample response header
💻 Bilgisayar

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.

👋 🚨 Yeni yazılardan haberdar olmak ister misiniz? 👇

Gzip Sıkıştırması ile Sitenizi Hızlandırın 66 yorum aldı.

  1. vallahi de çok güzel bir anlatım. Çok özgün ve ilgi çekici. Google amca bana siteni biraz sıkıştır istersen diyor. Ben biraz araştırınca sizin site ile karşılaştım. Fakat daha çok acemi olduğum için fazla bir şey anlamadım. Yine de çok teşekkür ediyorum.

  2. Merhaba Umut 🙂 öncelikle sitene bayıldım desem yeridir, senelerce siteyi aktif tutmuşsun tebrik ederim.Konuyla alakalı soruma gelecek olursak benim serverım .htaccess dosyasına izin vermiyor veya şöyle diyeyim ne yazarsam yazayım etkisi olmuyor.Ben gziple sıkıştırma yapıp iyi pagespeed ve yslow puanı için bana yardım etmeni istiyorum.Neler yapabilirim? site hızlandırma, seo, eklentiler hakkında iyi bilgiye sahip olduğumu düşünüyorum.Ona göre cevap verebilirsin.Teşekkürler şimdiden 🙂

    1. Merhaba Süha,

      Uzun süredir Apache'nin web sunucusunu kullanmadığımdan yardımcı olabileceğimi sanmıyorum. Şu an bu site için nginx ve php5-fpm kullanıyorum. Gzip ve şeylerin tamamı nginx için ayarlı halde.

      Ancak aklıma gelen genel sorun, hosting firmanızın o özelliği/.htaccess dosyalarına izin vermemesi. Bunun için kendilerine danışıp bilgi alma şansınız varsa deneyebilirsiniz.

      1. Kendilerine danıştım ve böyle bir özelliğimiz yok dediler 😀 çok yardımcı oldular açıkçası.Peki beni yönlendirebileceğin bir makale veya bir kişi var mıdır? Çünkü alternatif yollar arıyorum bu cevabı aldıktan sonra ve henüz bulamadım.

  3. Hocam iyi geceler öncelikle paylaşımlar için teşşekkür ederiz acaba oluşturduğumuz htacess dosyasına bu komutları ekledikten sonra serverin içine atmamız yeterlimi yada özel biryer varmı atmamız gereken

    1. Sitenin sunulduğu en üstteki dizine atmalısınız veya orada bulunan dosyanın içine ilave etmelisiniz. (www, public_html veya benzer bir ismi olur genelde)

  4. Merhaba,

    IIS 7 kullanan ve windows 2008 server üzerinde çalışan .net tabanlı bir web sitesinde .htaccess ile bu denileni yapma şansımız maalesef olamıyor. .Net tabanlı bir site için gzip olayını nasıl çalıştırabiliriz. Yardımcı olabilirseniz çok sevinirim.

  5. Emeğine sağlık gtmetrix böyle şeyler öneriyordu 🙂 tamda üzerine bastım.Teşekkürler.

  6. hocam nasıl teşekkür etsem az, bu kadar net anlatılır! 2 aydır çözemediğim sorunu basit anlatımın sayesinde çözdüm, teşekkürler. Bir hata daha var düzeltilmesi gereken, bununla ilgili de internette pek kaynak mevcut değil. '' Oluşturmayı önleyen JavaScript ve CSS kodlarını ekranın üst kısmındaki içerikten kaldırın '' diye bir hata.

  7. Bu işlemi html sitelerde de yapabilir miyiz benim sitem full html ? Klasör klasör ayrı tüm dosyalarım.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir