📦

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.

· 5dk okuma

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 B450 B~%45
API yanıtı (birçok küçük kayıt)12 KB7 KB~%40
Uzun dizeleri olan belge50 KB43 KB~%15
Çoğunlukla sayıları olan belge8 KB4.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:

DurumBoyut
Biçimlendirilmiş12 KB
Küçültülmüş7 KB
Biçimlendirilmiş + gzip3,5 KB
Küçültülmüş + gzip2,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ışı

  1. Üretimde ağ üzerinden mi gidiyor? → Küçültün
  2. URL’ye, çereze veya localStorage’a mı giriyor? → Küçültün
  3. Bir insan okuyacak veya düzenleyecek mi? → Küçültmeyin
  4. Git’e commit ediliyor mu? → Küçültmeyin
  5. Hata ayıklama sırasında okunabilecek günlükler mi? → Küçültmeyin
  6. 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.