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

by Ersin on Jul.27, 2007, under Php Web Programlama

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
<?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


2 Bu girdi icin yorumlar

  • Murat Sümer

    Ç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ş.

  • Ersin

    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.

Leave a Reply

Birşey mi aradın ?

Sitede arama yapmak icin asagidaki formu kullanin:

Hala aradigini bulamadin mi ? Gönderiye bir yorum bırak, ya da benim ile iletişime geç, elimden geldiğince yardimci olurum!

Tavsiye olunur!

Tavsiye baglantilar