API Yanıtlarını Sıkıştırma: GZIP ve Brotli Kodlama Pratiği

API'den dönen büyük JSON verisi ağ üzerinden yavaş gidiyor mu? Sıkıştırma (compression) bunu çözer. GZIP ve Brotli, HTTP yanıtlarını küçülterek bant genişliğini azaltır ve istemci tarafında otomatik açılır.

GZIP daha eski ve yaygın, Brotli ise daha yeni ve genellikle daha iyi sıkıştırır. İkisini de desteklemek en iyi yöntemdir.

Node.js ile GZIP ve Brotli

Express.js'te sıkıştırma middleware'i kullanmak en basit yoldur.

1const express = require('express');
2const compression = require('compression');
3
4const app = express();
5
6// Hem GZIP hem Brotli'yi etkinleştir
7app.use(compression());
8
9app.get('/api/data', (req, res) => {
10const largeData = {
11users: Array(1000).fill(null).map((_, i) => ({
12id: i,
13name: `User ${i}`,
14email: `user${i}@example.com`,
15description: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
16}))
17};
18res.json(largeData);
19});
20
21app.listen(3000, () => console.log('Sunucu 3000 portunda çalışıyor'));

CMD'de çalıştır:

1npm install express compression
2node app.js

Tarayıcı konsolunda (DevTools Network) yanıtın başlığını kontrol et: `Content-Encoding: gzip` veya `Content-Encoding: br` (Brotli) görünecek.

Python Flask ile Sıkıştırma

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Flask-Compress kütüphanesi aynı işi yapar.

1from flask import Flask, jsonify
2from flask_compress import Compress
3
4app = Flask(__name__)
5Compress(app)
6
7@app.route('/api/data')
8def get_data():
9large_data = {
10'users': [
11{
12'id': i,
13'name': f'User {i}',
14'email': f'user{i}@example.com',
15'description': 'Lorem ipsum dolor sit amet, consectetur adipiscing elit.'
16}
17for i in range(1000)
18]
19}
20return jsonify(large_data)
21
22if __name__ == '__main__':
23app.run(debug=True, port=5000)

Kurul ve çalıştır:

1pip install flask flask-compress
2python app.py

Performans Farkı

Sıkıştırılmamış 1000 kullanıcılı JSON yaklaşık 150 KB. GZIP ile 15-20 KB, Brotli ile 12-18 KB olur. Ağ hızı yavaşsa bu fark dramatiktir.

Sık Yapılan Hata

Her zaman sıkıştırma etkinleştirme. Küçük yanıtlar (< 1 KB) sıkıştırılmadan daha ağır olabilir; middleware'ler bunu otomatik filtreliyor. Ayrıca resim, video gibi zaten sıkıştırılmış dosyalar tekrar sıkıştırılmaz.

Brotli desteği eski tarayıcılarda olmayabilir; bu yüzden GZIP fallback'i önemli. Express compression ve Flask-Compress bunu otomatik yapıyor.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz