Sunucu Taraflı Sıkıştırma: Gzip, Deflate ve Brotli

Emre Ozkan
Neredekaltech
Published in
4 min readMar 28, 2023
neredekal.com
Sunucu Taraflı Sıkıştırma

Bu sıkıştırma algoritmaları, sunucudan tarayıcıya gönderilen web sayfalarının içerisinde bulunan başta html, css ve javascript dosya boyutunu azaltarak sayfa yükleme süresini hızlandırmaya yardımcı olur. Sunucu, web sayfasının yanıtında hangi sıkıştırma algoritmasını kullanacağına karar verir ve tarayıcı, uygun sıkıştırma algoritması desteği olan en iyi seçeneği kullanır.

Gzip, deflate ve brotli, HTTP protokolünde kullanılan sıkıştırma yöntemleridir. Bu yöntemler farklı sıkıştırma algoritmalarını kullanarak verileri sıkıştırırlar. Sıkıştırma yüzdeleri ve performansları, sıkıştırılan verilerin türüne, boyutuna ve özelliklerine bağlı olarak değişebilir.

gzip sıkıştırma yöntemi, verileri yüzde 60 ila 90 arasında sıkıştırabilir ve genellikle iyi bir performans gösterir. Deflate sıkıştırma yöntemi, verileri yüzde 55 ila 75 arasında sıkıştırabilir ve gzip’e kıyasla daha az performans gösterir. Brotli sıkıştırma yöntemi ise, verileri yüzde 20 ila 30 arasında sıkıştırabilir ve gzip ve deflate’e kıyasla daha hızlı performans gösterir.

Ancak, sıkıştırma yüzdeleri ve performansları, verilerin türüne, boyutuna ve özelliklerine bağlı olarak değişebilir. Örneğin, metin tabanlı veriler genellikle daha iyi sıkıştırılabilir ve daha iyi performans gösterebilirken, zaten sıkıştırılmış veya önceden sıkıştırılmış veriler, sıkıştırma yöntemleri tarafından daha az sıkıştırılabilir ve daha düşük performans gösterebilir.

Content-Encoding: {gzip, deflate, brotli}, sunucudan tarayıcıya gönderilen bir HTTP yanıtında sıkıştırılmış içeriği işaret eder. Bu, web sayfasının boyutunu azaltır ve sayfa yükleme süresini hızlandırmaya yardımcı olur. Tarayıcı, sunucudan gelen yanıtı aldığında, {gzip, deflate, brotli} sıkıştırma algoritmasını kullanarak içeriği açar ve web sayfasını normal olarak görüntüler.

Web sunucusu ile web tarayıcısı arasında gerçekleşen bu işlemin çalışma adımları aşağıdaki gibidir.

  1. Tarayıcı, bir web sayfasına erişmek için bir istekte bulunur. İletilen bu istek, örnek görselde bulunan www.neredekal.com web sitesinin browser network isteğinde görüldüğü gibi, Request Header içerisinde yer alan “Accept-Encoding: gzip, deflate, br” ile istemcinin (tarayıcının) desteklediği sıkıştırma yöntemlerini sunucuya bildirir.
neredekal.com uygun bodrum otel fiyatları
neredekal.com web sitesi için bir browser network request header örneği

2. Web sunucusu, tarayıcının istediği kaynak dosyalarının hangi sıkıştırma yöntemiyle gönderileceğini belirler. Bu aşamada, sunucu, tarayıcının desteklediği sıkıştırma yöntemlerinden birini (gzip, deflate, br, vb.) seçer.

3. Web sunucusu, tarayıcının isteğine yanıt olarak, belirlenen sıkıştırma yöntemini kullanarak kaynak dosyasını sıkıştırır ve web sayfasının kaynak dosyalarını (HTML, CSS, JavaScript, görseller, vb.) tarayıcıya gönderir.

neredekal.com ucuz otel fiyatları karşılaştırma
neredekal.com web sitesi için bir browser network response headers örneği

4. Tarayıcı, aldığı sıkıştırılmış dosyaları çözümler ve web sayfasını gösterir.

neredekal.com uygun otel fiyatları karşılaştırma
neredekal.com otel fiyatları karşılaştırma

Gzip, deflate ve brotli, web tarayıcıları ve sunucular arasında sıkıştırılmış veri transferini sağlayan birkaç farklı sıkıştırma algoritmasına referans veren HTTP (Hypertext Transfer Protocol) yanıt başlıklarıdır.

gzip: gzip, sıkıştırılmış verileri iletmek için en yaygın kullanılan algoritmadır ve sıkıştırılmış verilerin boyutunu önemli ölçüde azaltır. gzip, tarayıcının desteklediği en yaygın sıkıştırma algoritmasıdır ve neredeyse tüm modern tarayıcılar tarafından desteklenir.

deflate: deflate, gzip’ten daha eski bir sıkıştırma algoritmasıdır ve gzip’ten daha az sıkıştırma oranına sahiptir. Ancak, deflate daha hızlıdır ve bazı durumlarda daha iyi performans gösterir. Deflate, modern tarayıcılar tarafından hala desteklenir, ancak gzip daha yaygın olarak kullanılır.

brotli: brotli, daha yeni bir sıkıştırma algoritmasıdır ve gzip ve deflate’ten daha yüksek bir sıkıştırma oranına sahiptir. brotli, modern tarayıcılar tarafından desteklenir ancak daha az yaygın olarak kullanılır.

Sunucu Taraflı Sıkıştırma Yöntemleri Görsel Dosyaları için Kullanılır mı?

gzip, deflate ve brotli gibi sıkıştırma yöntemleri, görsel dosyaları da sıkıştırabilir. Ancak, görsel dosyalar zaten sıkıştırılmış biçimde olabilirler (örneğin, JPEG veya PNG dosyaları gibi), bu nedenle daha fazla sıkıştırma elde etmek için kullanılan sıkıştırma oranı sınırlı olabilir.

Bununla birlikte, bazı dosya formatları (örneğin, BMP dosyaları) sıkıştırma olmadan saklanır, bu nedenle bu dosya türleri, sıkıştırma ile daha küçük boyutlarda saklanabilirler.

Sıkıştırma yöntemleri görsel dosyaları da sıkıştırabilir, ancak bazı dosya türleri sıkıştırma olmadan saklanır ve sıkıştırma oranı dosya formatına ve içeriğine bağlı olacaktır.

Sunucu Taraflı Sıkıştırma Yöntemleri ile CDN (Content Delivery Network) Arasındaki İlişki

Görseller için gzip, deflate ve brotli sıkıştırması CDN (Content Delivery Network) kullanımından bağımsız olarak uygulanabilir. CDN, bir web sitesinin statik içeriğini hızlı bir şekilde dağıtmak için kullanılan bir teknolojidir. Bununla birlikte, gzip, deflate ve brotli gibi sıkıştırma yöntemleri, görsel dosyaların boyutunu azaltarak sayfa yükleme hızını artırabilir.

Gzip, deflate ve brotli, sunucu tarafından yapılan bir sıkıştırma işlemidir ve bu işlem, görsel dosyaların indirme boyutunu azaltarak sayfa yükleme süresini kısaltabilir. Bununla birlikte, bazı görsel dosya türleri zaten sıkıştırılmış olduğundan (örneğin, JPEG veya PNG dosyaları gibi), sıkıştırma yöntemlerinin etkisi bu dosyalar için sınırlı olabilir.

CDN, görsel dosyaları hızlı bir şekilde dağıtmak için kullanılan bir teknolojidir. CDN kullanımı, özellikle büyük ölçütlü kullanıcıları olan büyük web siteleri için faydalıdır. CDN, dosyaları yakın bir sunucudan teslim ederek sayfa yükleme hızını artırabilir.

Görseller için gzip, deflate ve brotli sıkıştırması ve CDN kullanımı, birbirini tamamlayan teknolojilerdir. Her ikisi de sayfa yükleme hızını artırabilir, ancak sıkıştırma işlemi sunucu tarafında gerçekleştirildiğinden CDN kullanımından bağımsızdır.

Sunucu Taraflı Sıkıştırma Yöntemleri ile SSL (Secure Sockets Layer) Arasındaki İlişki

gzip, deflate ve brotli gibi sıkıştırma yöntemleri, SSL (Secure Sockets Layer) iletişiminde kullanılabilen HTTPS (HTTP Secure) protokolü ile ilişkilidir. HTTPS, web trafiğinin güvenli bir şekilde iletilmesini sağlayan bir protokoldür ve SSL/TLS şifreleme protokollerini kullanarak verilerin güvenliğini sağlar.

SSL/TLS protokolleri, web sunucusu ve tarayıcı arasında verilerin şifrelenmesini ve deşifrelenmesini sağlar. Bu protokoller ayrıca, sıkıştırma yöntemlerini kullanarak veri trafiğini azaltarak sayfa yükleme süresini kısaltabilirler.

SSL/TLS protokolleri, sıkıştırma yöntemlerini kullanarak veri trafiğini azaltmanın yanı sıra, önbellekleme (caching) gibi diğer optimizasyon tekniklerini de destekler. Bu optimizasyon teknikleri, sayfa yükleme süresini kısaltmak için kullanılabilir.

Özetle, gzip, deflate ve brotli gibi sıkıştırma yöntemleri, HTTPS trafiğinde kullanılan SSL/TLS şifreleme protokollerinin bir parçasıdır. Bu yöntemler, veri trafiğini azaltarak sayfa yükleme süresini kısaltabilir ve SSL/TLS protokolleri gibi diğer optimizasyon teknikleriyle birlikte kullanılarak daha hızlı ve güvenli bir web deneyimi sağlayabilirler.

--

--