JSON küçültme: ne zaman önemli ve ne zaman değil
JSON'u küçültmek %30-50 dosya boyutu tasarrufu sağlayabilir - ancak yalnızca alt akışta önemli olacaksa. İşte ne zaman uğraşacağınız, ne zaman atlayacağınız ve güvenli şekilde nasıl yapacağınız.
Küçültme, bir JSON belgesinden tüm gereksiz boşlukları çıkarma işlemi. Güzelleştirilmiş 2 KB’lık dosya genellikle yaklaşık 1,2 KB’a iner — %35-45 tasarruf. Yeterince basit. Soru şu: bu baytları tasarruf etmek sizin durumunuz için önemli mi?
Çoğunlukla değildir. Küçültülmesi gerekmeyen JSON’u küçültmek insanların okumasını zorlaştırır. Değiş tokuşun ne zaman değerli olduğuna bakalım.
Küçültme aslında ne yapar
Küçültme şunları kaldırır:
- Girinti (satır başlarındaki boşluklar)
- Anahtarlar, öğeler ve parantezler arasındaki satır sonları
- İki nokta üst üste ve virgüllerden sonraki boşluklar
- Sondaki boşluklar
Şunları kaldırmaz:
- Tırnaklar (gerekli)
- Anahtar adları (bunlar veri, biçimlendirme değil)
- Yinelenen veya kullanılmayan anahtarlar (bunlar da veri)
Biçimlendirilmiş:
{
"name": "Alice",
"role": "admin",
"active": true
}
Küçültülmüş:
{"name":"Alice","role":"admin","active":true}
Her ikisi de aynı JavaScript nesnesine çözümlenir. Tek fark diskteki veya kablo üzerindeki baytlar.
Pratikte ne kadar tasarruf edersiniz
Tasarruf, JSON’un ne kadar “yoğun” olduğuna göre değişir:
| İçerik türü | Biçimlendirilmiş | Küçültülmüş | Tasarruf |
|---|---|---|---|
| Yapılandırma dosyası (küçük, insan ayarlı) | 800 B | 450 B | ~%45 |
| API yanıtı (birçok küçük kayıt) | 12 KB | 7 KB | ~%40 |
| Uzun dizeleri olan belge | 50 KB | 43 KB | ~%15 |
| Çoğunlukla sayıları olan belge | 8 KB | 4.5 KB | ~%45 |
Tasarruf, JSON kısa değerlerle yapısal olarak karmaşık olduğunda en büyük; birkaç büyük dizeden oluştuğunda en küçük.
Ne zaman küçültmeli
1. Üretim API yanıtları
JSON’u sunucudan ağ üzerinden istemciye gönderiyorsanız, küçültün. Yüksek trafikli API için %40 daha küçük yükler = %40 daha az çıkış bant genişliği. İstemciler bunu hiç görmez — çözümlerler. Girinti üretimde ölü ağırlık.
2. URL’lere veya çerezlere gömülü JSON
URL’lerin uzunluk sınırları var (genellikle 2048 bayt güvenli). Çerezlerin boyut sınırları var (çerez başına 4 KB). Her bayt önemli. URI-kodlamadan önce küçültün.
3. Veritabanlarında veya günlüklerde depolanan JSON
Ham JSON’u TEXT sütununda depoluyorsanız, eklemeden önce küçültün. Milyonlarca satır boyunca gerçek disk tasarrufu edersiniz. Yapılandırılmış günlükler için, satırları tek bir ekran satırında okunabilir tutmak için küçültün.
4. JavaScript veya HTML’e paketlenmiş JSON
JSON’u bir JavaScript dosyasına veya HTML’e satır içi yerleştiriyorsanız küçültün. Paketleyici bunu güvenilir şekilde yapmayabilir ve tasarruf edilen baytlar doğrudan sayfa ağırlığından çıkar.
Ne zaman küçültmeyin
1. Yapılandırma dosyaları
package.json, tsconfig.json veya başka bir yapılandırma biçimlendirilmiş kalmalı. Küçültmek inceleme, düzenleme ve hata ayıklamayı sıfır pratik fayda için zorlaştırır — yapılandırmalar araçlar tarafından okunur, ağ üzerinden gönderilmez.
2. Git’te depolanan JSON
Biçimlendirilmiş JSON yararlı diff üretir. Küçültülmüş JSON, her küçük düzenlemede tamamen değişen tek satır üretir — kod incelemesi kabusa döner.
# Biçimlendirilmiş:
- "version": "1.0.2",
+ "version": "1.0.3",
# Küçültülmüş (tek satır):
-{"name":"app","version":"1.0.2","dependencies":{...}}
+{"name":"app","version":"1.0.3","dependencies":{...}}
Biçimlendirilmiş JSON commit edin. Her zaman.
3. Belgelerde örnek veri
JSON yapısını belgelerde, blog yazısında veya README’de gösteriyorsanız biçimlendirin. Okuyucuların şekli anlaması gerekir.
4. Hata ayıklama çıktısı
Bir API’den gelen şeyi anlamaya çalışıyorsanız, biçimlendirilmiş her zaman daha iyi. console.log(JSON.stringify(data, null, 2)) hata ayıklama için evrensel doğru desen.
5. Sabitler ve test verileri
Küçültülmüş test sabitleri başarısız testlerin tanısını zorlaştırır. Biçimlendirilmiş tutun.
Sıkıştırma ve küçültme birlikte
Çoğu web sunucusu JSON yanıtlarına otomatik olarak gzip veya brotli sıkıştırma uygular. Gzip, JSON’u tipik olarak orijinal boyutunun %15-25’ine sıkıştırır.
Sıkıştırmadan sonra, biçimlendirilmiş ve küçültülmüş JSON arasındaki fark önemli ölçüde küçülür:
| Durum | Boyut |
|---|---|
| Biçimlendirilmiş | 12 KB |
| Küçültülmüş | 7 KB |
| Biçimlendirilmiş + gzip | 3,5 KB |
| Küçültülmüş + gzip | 2,8 KB |
Boru hattında gzip varsa, küçültme ~%40 yerine ~%20 tasarruf eder. Yüksek trafikli API’ler için hâlâ değer, ama naif sayıların gösterdiğinden daha az kritik.
JSON yanıtlarınızı gzip’lemiyorsanız — birçok backend kurulumu bunu unutur — önce bunu düzeltin. Gzip tek başına küçültmeden daha büyük kazanım.
Nasıl küçültülür
JavaScript/Node’da:
const minified = JSON.stringify(obj); // girinti argümanı yok = küçültülmüş
const formatted = JSON.stringify(obj, null, 2); // 2 boşluk girinti
jq ile komut satırı:
jq -c . input.json > minified.json # compact için -c
Çevrimiçi: JSON Formatter aracımızın bir Minify düğmesi var. Her şey tarayıcınızda çalışır — yükleme yok, hassas JSON güvende.
Basit karar akışı
- Üretimde ağ üzerinden mi gidiyor? → Küçültün
- URL’ye, çereze veya localStorage’a mı giriyor? → Küçültün
- Bir insan okuyacak veya düzenleyecek mi? → Küçültmeyin
- Git’e commit ediliyor mu? → Küçültmeyin
- Hata ayıklama sırasında okunabilecek günlükler mi? → Küçültmeyin
- Hâlâ emin değilseniz? → Küçültmeyin (okunabilirlik neredeyse her zaman tasarruf edilen baytlardan daha değerli)
Özet: bir makine tarafından çözümlenecek ve asla bir insan tarafından okunmayacaksa küçültün. Herhangi biri ona bakacaksa biçimlendirin. Küçültme ile tasarruf edilen baytlar ölçekte birikir; okunamaz JSON’a kaybedilen zaman dosyayı açan her kişi için önemlidir.
JSON Formatter hem Format hem de Minify düğmelerine sahip, tarayıcınızda çalışıyor. Okumak için biçimlendirin, göndermek için küçültün — tek tıklamayla her yönde.