فشردهسازی JSON چیست؟
فشردهسازی JSON تمام فضاهای خالی غیرضروری — شامل فاصلهها، تبها و سطرهای جدید — را از یک سند JSON حذف میکند بدون اینکه داده یا ساختار آن تغییر کند. نتیجه یک رشته فشرده و تکخطی است که از نظر عملکردی با نسخه اصلی کاملاً یکسان است اما حجم بسیار کمتری دارد.
After · json
Before · json
{"user":"alice","role":"admin","active":true}{
"user": "alice",
"role": "admin",
"active": true
}چرا JSON را فشرده کنیم؟
در برنامههای وب مدرن هر بایت اهمیت دارد. JSON فشرده حجم دادههای ارسالی را کاهش میدهد، پاسخهای API را سریعتر میکند و هزینههای پهنای باند را پایین میآورد — بهویژه هنگام پردازش میلیونها درخواست.
⚡
انتقال سریعتر
دادههای کمتر به معنای پاسخهای HTTP سریعتر و تأخیر کمتر است — حتی روی اتصالات سریع هم محسوس است.
📦
کاهش هزینه پهنای باند
APIها و CDNها بر اساس حجم داده منتقلشده هزینه دریافت میکنند. کاهش ۶۰ تا ۸۰ درصدی حجم دادههای JSON در مقیاس بزرگ بسیار تأثیرگذار است.
📱
مناسب برای موبایل
کاربران موبایل با اتصالات کندتر بیشترین بهره را از پاسخهای فشرده میبرند. داده کمتر به معنای برنامه سریعتر است.
🔒
حریم خصوصی محفوظ
فشردهسازی کاملاً در مرورگر شما انجام میشود. هیچ دادهای به سرور ارسال نمیشود.
چه زمانی باید فشردهسازی کنید؟
مناسب است
- –پاسخهای API که به کلاینتها ارائه میشوند
- –فایلهای پیکربندی در بیلدهای تولیدی
- –JSON جاسازیشده در صفحات HTML
- –فایلهای داده استاتیک که از CDN ارائه میشوند
- –دادههای برنامه موبایل که هر کیلوبایت اهمیت دارد
نیاز نیست
- –فایلهای پیکربندی که فعالانه ویرایش میکنید
- –لاگهای دیباگ که باید بخوانید
- –JSON تحت کنترل سورس (به diffها آسیب میزند)
- –فایلهایی که قبلاً با gzip یا Brotli فشرده شدهاند
- –فایلهای اسکیما یا مستندات مشترک
موارد استفاده رایج
پاسخهای REST API
قبل از ارائه JSON از API خود آن را فشرده کنید تا زمان پاسخ و مصرف پهنای باند کاهش یابد.
پایپلاینهای بیلد فرانتاند
فایلهای داده JSON فشرده را مستقیماً در بیلد JavaScript خود بستهبندی کنید تا فایلهای استاتیک سبکتری داشته باشید.
فایلهای پیکربندی
JSON پیکربندی فشرده را در ایمیجهای Docker، لایههای Lambda یا متغیرهای محیطی جاسازی کنید.
صادرات / واردات داده
JSON فشرده را برای آپلود سریعتر و آرشیوهای کوچکتر صادر کنید.
پیامهای WebSocket
برنامههای بلادرنگی که پیامهای JSON زیادی ارسال میکنند با کاهش حجم پیام بهره زیادی میبرند.
دستگاههای جاسازیشده و IoT
دستگاههای محدود با حافظه و پهنای باند کم به کوچکترین دادههای JSON ممکن نیاز دارند.
فشردهسازی در برابر فشردهسازی HTTP
فشردهسازی JSON و فشردهسازی HTTP مکمل یکدیگرند — نه جایگزین. استفاده از هر دو بهترین نتیجه را میدهد.
روش
کاهش حجم
محل اعمال
Minification
60–80%
بیلد / دستی
gzip
70–90%
لایه HTTP (خودکار)
Brotli
75–95%
لایه HTTP (خودکار)
Minify + Brotli
92–98%
بهترین ترکیب
فشردهسازی در کد
میتوانید JSON را به صورت برنامهای در هر زبانی فشرده کنید — بدون نیاز به کتابخانه خارجی.
JavaScript / Node.js
JSON.stringify(JSON.parse(input))
Python
json.dumps(json.loads(input), separators=(',', ':'))CLI (jq)
cat data.json | jq -c .
Go
json.Compact(&buf, data)
سوالات متداول
آیا فشردهسازی دادههایم را تغییر میدهد؟
خیر. فشردهسازی فقط فضاهای خالی بیاهمیت را حذف میکند. تمام کلیدها، مقادیر، آرایهها و آبجکتها دقیقاً همان میمانند.
آیا JSON فشردهشده معتبر است؟
بله — کاملاً معتبر است. هر پارسر JSON میتواند آن را بخواند. فضای خالی بخشی از مدل داده JSON نیست.
JSON چقدر کوچکتر میشود؟
معمولاً ۲۰ تا ۶۰ درصد کوچکتر میشود، بسته به میزان فضای خالی موجود در نسخه اصلی. فایلهای با تورفتگی عمیق بیشتر فشرده میشوند.
آیا باید قبل یا بعد از gzip فشرده کنم؟
ابتدا فشردهسازی کنید، سپس بگذارید سرور شما gzip یا Brotli را اعمال کند. هر دو روش در سطوح مختلف عمل میکنند و به خوبی مکمل هم هستند.
آیا میتوانم JSON با کامنتها را فشرده کنم؟
JSON استاندارد از کامنتها پشتیبانی نمیکند. اگر فایل شما از کامنتهای // یا /* */ استفاده میکند (JSONC یا JSON5)، باید ابتدا آنها را حذف کنید زیرا JSON معتبر نیستند.