Delphi Compress Stream

Bu yazım da ZLib kütüphanesini kullanarak TStream sınıfından türetilmiş olan çeşitli stream sınıflarında ki verileri sıkıştırmayı ve sıkıştırılmış olan verileri tekrar eski hallerine getirmeyi anlatacağım.

Sıkıştırma işlemi bize ne gibi bir fayda sağlayacak? Derseniz, bir kaç madde ile aklıma gelen ilk faydalarını belirteyim.

  • Veritabanına kayıt edilecek bir dosya sıkıştırıldıktan sonra veritabanın da daha az yer tutacaktır.
  • Veritabanına kayıt etme hızı artacak ,kayıt işlemi sırasında daha az bekleme olacaktır.
  • Veritabanından kayda erişim, kaydı okuma hızı artacaktır.
  • Disk üzerinde tutulacak ise gene alandan kazanım sağlanacaktır.
  • Veri uzak noktalara iletilecek ise transfer hızında artış olacaktır. Kısa sürede büyük verilerin iletimi sağlanacaktır.
Kısacası veri iletişimi ve depolama maliyetleri azalacaktır.
Aşağıda yazdığım methodlar ile stream içeriğinin nasıl sıkıştırılacağını, sıkıştırılan verinin nasıl tekrar eski haline getirileceğini görebilirsiniz.
Veri sıkıştırma (TCompressionStream);

Veri çözümleme (TDecompressionStream);

Sıkıştırma seviyeleri (TCompressionLevel)

  • clNone = sıkıştırma yapılmaz (en hızlı işlem süresi)
  • clFastest = minimum sıkıştırma (hızlı işlem süresi)
  • clDefault = normal sıkıştırma (yavaş işlem süresi)
  • clMax = en iyi sıkıştırma (çok yavaş işlem süresi)

GlassFish HTTP Compression

HTTP Compression nedir?

Http işlemleri bilindiği üzere text(yazı) formatlı olarak yapılır. Sıkıştırma algoritmalarının da en başarılı olduğu işlem text sıkıştırma işlemleridir. Bu yüzden http üzerinden bir dosya transferi işleminde 10 mb lık bir xml dosyasını 1 mb a kadar düşürüp, transfer hızını arttırıp bandwidth den de kazanım sağlayabilirsiniz. Fakat JPEG, AVI gibi sıkıştırılmış görüntü veya video, ses dosyalarını transfer edecekseniz HTTP compression işlemi size ek bir maliyet getirecektir. Sıkıştırılmış bir dosyanın tekrar sıkıştırılması boyutunu küçültmez, küçülme olmadığı gibi birde compress ve decompress algoritmaları devreye gireceği için yavaşlama olacaktır.

Şimdi GlassFish Server üzerinden yapılan Http işlemlerini sıkıştırıp network trafiğinden kazanmak için glassfish’in bize sunmuş olduğu ayarlara bakalım.

  1. GlassFish web yönetim arayüzünü açın http://localhost:4848
  2. Configuration->Server Configuration->Network Config->Network Listeners konumuna gidin
  3. Varsayılan olarak http-listener-1 adındaki listener ı tıklayın (Kendi server yapılandırmanızda farklı isim vermiş olabilirsiniz. İlgili listener ı açın.)
  4. HTTP sekmesinde Compression: on yapın.
    On: Sıkıştırma client isterse aktif.
    Off: Sıkıştırma kapalı.
    Force: Sıkıştırmaya zorlar, client istesede istemesede sıkıştırır.
  5. Compression Minimum Size: varsayılan 2048 Byte dır. Bu ayar sıkıştırma işlemi uygulanacak en küçük dosya boyutunu belirtir. 2 kb dan büyük dosyalara sıkıştırma işlemi uygulanacağı anlamındadır.