27 Jul

GZIP sıkıştırması ile sitenizi hızlandırın II

Bir önceki dökümadan anlatılan gzip sıkıştırmasındaki maharet, sunucu ile tarayıcının dosyanın sıkıştırılmış bir biçimde taşınabileceğini bilmelerinden kaynaklanır. Anlaşma iki bölümden meydana gelir:
Tarayıcı sunucuya sıkıştırlımış içerik kabul ettiğini belirten bir header gönderir (gzip ve deflate olarak iki biçimlidir):
Accept-Encoding:gzip,deflate
Sunucu içerik sıkıştırılmışsa bir yanıt verir:
Content-Encoding:gzip
Şayet sunucu content-encoding yanıtını göndermezse, dosya sıkıştırılmış biçimde değildir anlamına gelir (birçok sunucuda bu sıkıştırılmamış biçimde ayarlıdır).
?Accept-Encoding? başlığı tarayıcı tarafından gönderilen, önemli olmayan bir header (başlık) dır. Sunucu geriye sıkıştırılmış bir içerik döndürmek istemiyorsa, tarayıcı sıkıştırılmamış biçimiyle uğraşmak zorunda kalır.

Sunucuyu ayarlamak

?iyi haber? tarayıcıyı kontrol edemiyoruz. Tarayıcı ister ?Accept-Encoding:gzip,deflate? başlığını göndersin, isterse göndermesin.
Görevimiz tarayıcı destekliyorsa, sunucuyu geriye sıkıştırılmış içerik döndürmesini ayarlayarak, herkesin bant genişliğinden tasarruf etmesini sağlamak (ve bize mutlu kullanıcılar vermesi).
Apache de çıktı sıkştırmasını aktif etmek, oldukça kolay ve nettir. Aşağıdaki satırları .htaccess dosyanıza ekleyin:

1
2
3
4
5
6
7
# tüm text & html i sıkıştır:
AddOutputFilterByType DEFLATE text/html text/plain text/xml

# veya belirtilen uzantıdaki dosyaları sıkıştır
<files *.html>
SetOutputFilter DEFLATE
</files>

Aslında Apache iki tür sıkıştırma sunar:
mod_deflate ayarlaması kolaydır ve standarttır
mod_gzip daha kullanışlı görünmekte- içeriğinizi ön-sıkıştırmadan geçirebilirsiniz
Deflate hızlıdır ve çalışıyor bu yüzden ben bunu kullanıyorum; kendi botunuzla yüzmek istiyorsanız mod_gzip i kullanın.
Bir başka durumda da Apache tarayıcının ?Accept-encoding? başlığını gönderip göndermediğini kontrol eder ve dosyanın sıkıştırılmış veya düzenli biçimini geri dönderir. Bu arada, bazı eski tarayıcılar sorun yaşayabilir ve bunu düzeltmek içinde, ek birkaç yönerge ekleyebilirsiniz.
.htaccess dosyanızı değiştiremiyor iseniz, sıkıştırılmış içerik elde etmek için PHP kullanabilirsiniz.
HMTL dosyanızın uzantısını .php olarak değiştirin ve aşağıdaki kodu başa ekleyin.

1
2
3
4
5
6
7
8
<?php
if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) {
ob_start("ob_gzhandler");
}
else {
ob_start();
}
?>

?Accept-encoding? başlığını kontrol ediyoruz ve dosyanın gziplenmiş versiyonunu dönderiyoruz( desteklemiyorsa normal biçimini).
Bu iş kendi web sunucunuzu inşa etmeye benziyor (Ne eğlenceli!). Fakat normalde, yapabiliyor iseniz Apache çıktı sıkıştırmasını kullanmayı deneyin. Dosyalarınızla maymun olmayı ietemezsiniz.
Sıkıştırmanızı doğrulayın.
Öncelikle sunucunuzu ayarlamış olmalısınız,sıkıştırımış içerik sunduğunuzu kontrol ederek emin olmalısınız.
Online: Sayfanızın sıkıştırılmış olup olmadığını burdan kontrol edebilirsiniz
Tarayıcınızda: (Firefox eklentisi) Web Developer Toolbar>Information>View Document Size (önceki yahoo örneindeki gibi) sayfanızın sıkıştırılmış olup olmadığını kontrol edin
Kısıtlamalar
HTTP sıkıştırması göründüğü kadar eğlenceli değildir. Aşağıda dikkat etmeniz gereken noktalar bulunmakta:
Eski tarayıcılar: Evet, bazı tarayıcılar hala sıkıştırılmış içerikle sorun yaşamaktalar (Sıkıştırılmış içerik kabul edemeyeceklerini söylerler, fakat kabul edebilirler). Siteniz
kesinlikle Windows95 üzerinde Netscape 1.0 da çalışmak zorundaysa, HTTP sıkıştırmasını kullanmak istemeyebilirsiniz. Apache mod_deflate  eski tarayıcılar için sıkıştırılma yapılmamsı için bazı roller tanımlayabilir
Önceden sıkıştırılmış içerik: Birçok resim,müzik ve video önceden sıkıştırılmıştır. Onları tekrar sıkıştırarak zaman kaybetmeyin. Aslında sadece HTML,CSS,Javascript üçlüsünü sıkıştırmanız gerekmektedir.
işlemci-yükü: Sıkıştırma paratikte işlemciyi meşgul eder ve bant genişliğinden kazandırır. Genellikle bu da sıkıştırma hızı için ödün vermek demektir.
Statik içeriği ön-sıkıştırmadan geçirmenin ve sıkıştırılmış haliyle göndermenin iki yolu vardır. Bu daha fazla ayar gerektirmektedir; şayet bu mümkün değilse bile,içeriği sıkıştırma yinede bir ağ kazanımı olur.
Sıkıştırmayı aktif etmek, site performansınızı arttırmanızın en hızlı yollarından biridir. Bir adım atın, ayarlarınızı yapın, ve kullanıcılarınızın bu avantajlı durumdan yararlanmasını sağlayın.

KAYNAK: betterexplained

8 thoughts on “GZIP sıkıştırması ile sitenizi hızlandırın II

  1. Çok güzel bir makale ve güzel çeviri yapmışsınız.
    Peki gzip’i asp.net’te hazırlanan sayfalar içinde kullanabilir miyiz? Yani makalede apache ve php için örnek verilmiş.

  2. IIS de gzip desteğinin aktif edilebileceği filan yazıyor makalelerde, ama hiç ihtiyacım olmadığı için kullanmadım ve çok fazla ayrıntı bilmiyorum.

  3. Sayfanizi Googleda arastirma yaparken rastladim. Gercekten cok iyi bir is cikarmissiniz. Bundan sonrada sik sik blogunuzu takip etmeye calisacagim.

  4. bazı tarayıcılar gzip sıkıştırmayı desteklemediği için siteniz görünmüyor.Buda ziyaretçiler açısından sıkıntı yaratıyor.Sonunda sitemizdeki sıkıştırmayı kaldırmak zorunda kaldık.Diğer parçaları silme yoluna giderek boyutunu azalttık.

  5. Örnekteki kodu kullanırsanız, deteklemeyen tarayıcılarda problem yaşamazsınız :

    if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) {
    ob_start(“ob_gzhandler”);
    }

  6. hosting firmam sanırım bu kodları desteklemiyor.

    # tüm text & html i sıkıştır:
    AddOutputFilterByType DEFLATE text/html text/plain text/xml

    # veya belirtilen uzantıdaki dosyaları sıkıştır

    SetOutputFilter DEFLATE

    kodlarını denediğimde sitem açılmıyor. ne yapabilirim.
    teşekkürler.

  7. < ?php if (substr_count($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip')) { ob_start("ob_gzhandler"); } else { ob_start(); } ?>
    Bu kodu kodlarınızın en tepesine eklerseniz aynı etkiyi alırsınız. Eğer tüm çağrılarınızı index.php üzerinden yapıyorsanız index.php dosyanızın en tepesine, eğer php dosyalarınız ayrı ayrı işleniyorsa her bir php dosyasının başına bunu eklemelisiniz.

Comments are closed.