مرورگر چه حجم فایل JSON را میتواند پردازش کند
جمعبندی: محدودیت ثابتی وجود ندارد؛ قید، بودجه حافظه تب شماست. فایل ۲۰ مگابایتی معمولاً پس از تجزیه ۶۰ تا ۱۰۰ مگابایت میشود و DOM هایلایتشده میتواند دوباره دو برابرش کند.

جمعبندی: سقف ثابتی وجود ندارد — از حافظه تخمین بزنید، چون شیء تجزیهشده معمولاً ۳ تا ۵ برابر اندازه متن هزینه دارد و DOM هایلایتشده دوباره دو برابرش میکند؛ بالاتر از ۵۰ مگابایت، یا وقتی تعداد رکوردهای سطح بالا به صدها هزار میرسد، بهجای تحمیل در تب آن را تکهتکه، جریانی یا به برنامه محلی منتقل کنید.
حافظه کجا میرود
متن JSON بیست مگابایتی سه بار وجود دارد:
- رشته خام: ۲۰ مگابایت
- گراف شیء تجزیهشده: معمولاً ۶۰ تا ۱۰۰ مگابایت (رشتههای تکراری، سرآیندهای شیء، جدولهای هش)
- DOM هایلایتشده: یک گره به ازای هر توکن، بهراحتی ۲ برابر دیگر
بافرهای ویرایشگر، پشتههای undo و کشهای هایلایت نحوی اضافهاند. یک «فایل ۲۰ مگابایتی» میتواند از ۲۰۰ مگابایت مقیم بگذرد.
قواعد سرانگشتی
| اندازه | دسکتاپ | موبایل |
|---|---|---|
| کمتر از ۵ مگابایت | روان | روان |
| ۵ تا ۲۰ مگابایت | تأخیر جزئی، ۱ تا ۳ ثانیه برای قالببندی | تأخیر محسوس، ممکن است قفل کند |
| ۲۰ تا ۵۰ مگابایت | قابل کار اما سنگین؛ هایلایت را خاموش کنید | احتمالاً از کار میافتد |
| بیشتر از ۵۰ مگابایت | توصیه نمیشود | قابل استفاده نیست |
اینها با دستگاه، نسخه مرورگر و روشن بودن هایلایت جابهجا میشوند. برای مرتبه بزرگی استفادهشان کنید، نه بهعنوان تضمین.
چرا RAM بیشتر حلش نمیکند
تبها محدودیت سختی دارند و عبور از آن یعنی از کار افتادن فوری نه تخریب مؤدبانه. موبایل سختگیرتر است و در چند صد مگابایت پایین بازپس میگیرد.
کار با فایلهای بزرگ
تکهتکهاش کنید.
head -c 1048576 big.json | jq .
jq '.items[0:100]' big.json
جریانیاش کنید. stream-json، ijson، jq --stream رکوردبهرکورد با حافظه مستقل از حجم فایل پردازش میکنند.
از برنامه محلی استفاده کنید. بدون محدودیت تب، با حافظه کامل دستگاه: دانلود دسکتاپ.
قالب را عوض کنید. لاگها و جریانهای رویداد باید از ابتدا NDJSON باشند — یک رکورد در هر خط، بهطراحی قابل جریان.
از بکاند بخواهید کوتاه کند. اگر رابط کاربری سه فیلد میخواهد، فرستادن سیصد مشکل طراحی API است، نه محدودیت مرورگر.
اندازه فایل را بسنجید
ls -lh data.json
jq 'length' data.json
اگر length در صدها هزار است، صفحهبندی یا جریان پاسخ است بدون توجه به اندازه بایت.
پرسشهای متداول
چگونه بفهمم فایلم در کدام بازه است؟
بایتها را با ls -lh و تعداد رکوردهای سطح بالا را با jq 'length' بررسی کنید. فایلهای زیر چند مگابایت همهجا رواناند، ۲۰ تا ۵۰ مگابایت روی دسکتاپ کار میکند اما لرزان است، و بالاتر از ۵۰ مگابایت باید جریان دهید یا از ابزار خط فرمان استفاده کنید.
با فایلی بالاتر از ۵۰ مگابایت چه کنم؟
با head -c تکهتکهاش کنید، یا با jq، stream-json یا jq --stream جریانیاش کنید تا حافظه مستقل از حجم فایل بماند. اگر باید کل سند را بررسی کنید، از برنامه دسکتاپ استفاده کنید که به بودجه حافظه تب مقید نیست. لاگها و جریانهای رویداد بههرحال متعلق به NDJSON هستند.