۱۴۰۴/۰۶/۲۰ Nebular

درخواست های کش شده در Network مرورگر و service-worker

Network تب DevTools کروم من یک سری ستون دارم name , status , type , initiator , size , time توی این ستون ها یک سری نوشته هست که یک سری کمرنگ تر بقیه هستن . میخوام ببینم دقیقا این هرکدوم از این ستون های چکاری انجام میدن .

اون نوشته‌های کمرنگ (gray) توی ستون‌ها (مثلاً توی ستون Size یا Time) نشونه‌ی اینه که اون مقدار تخمینی (approximate / cached) هست، نه اینکه مرورگر واقعاً درخواست کامل رو به سرور زده باشه.

کروم معمولاً سه حالت داره:

Bold (پررنگ):
مرورگر درخواست رو کامل به شبکه زده و جواب واقعی رو گرفته.
مثلا 200 OK با سایز دقیق فایل.

کمرنگ (Gray):
یعنی این ریکوئست از کش (HTTP cache, memory cache, یا disk cache) اومده.
مرورگر درخواست کامل به سرور نزده، بلکه از چیزی که قبلاً ذخیره کرده استفاده کرده.
برای همین عدد سایز/زمان رو تخمینی نشون میده.

کلاً خالی یا (from ServiceWorker) یا (memory cache) یا (disk cache):

(from ServiceWorker): یعنی سرویس‌ورکر هندل کرده.

(memory cache): یعنی فایل از کش RAM لود شده.

(disk cache): یعنی فایل از کش دیسک لود شده.

توی NEXT.js

وقتی next dev هستی، اکثر چیزها مستقیم از سرور dev لود میشه و پررنگ هست .وقتی build و run کردی (next build && next start) و رفرش می‌کنی، فایل‌های استاتیک مثل JS و CSS معمولاً از disk cache یا service worker cache میان → اعداد کمرنگ می‌شن.

توی این جدول میشه تفاوت ها رنگ ها رو بهتر مقایسه کرد

حالت نمایش در Networkمعنی دقیقچه زمانی رخ میدهنکته برای Next.js / PWA
Bold (پررنگ)درخواست کامل به سرور زده شدهوقتی فایل توی کش نباشه یا هدرها اجازه کش ندن (Cache-Control: no-store)معمولاً API calls یا فایل‌هایی که تازه تغییر کردن
Gray (کمرنگ)داده از کش خونده شده (نه از سرور)وقتی مرورگر یا SW فایل رو از cache لود کنهلود سریع‌تر، چون نیازی به رفتن به شبکه نیست
(from memory cache)فایل از RAM مرورگر لود شدهوقتی فایل اخیراً استفاده شده و هنوز توی حافظه مرورگر هستسریع‌ترین حالت (خیلی common برای JS/CSS بین رفرش‌ها)
(from disk cache)فایل از کش روی دیسک خونده شدهوقتی فایل توی RAM نیست ولی قبلاً دانلود شدهسرعت کمی کمتر از memory cache، ولی همچنان سریع‌تر از شبکه
(from ServiceWorker)پاسخ توسط service worker داده شدهوقتی SW ریکوئست رو هندل کنه (cache-first یا network-first)دقیقاً اون چیزی که برای PWA/Next.js caching می‌سازی
(304 Not Modified)مرورگر درخواست رو به سرور زد ولی سرور گفت نسخه عوض نشدهوقتی هدر ETag یا Last-Modified وجود داشته باشهمرورگر داده رو از cache local برمی‌داره ولی همچنان roundtrip به سرور داره

بررسی دقیقتر ارتباط ستون های network باهم


اگر initiator = other و size = (from disk cache) → یعنی مرورگر بدون SW خودش از cache داخلی استفاده کرده.

اگر initiator = service-worker و size = (from memory cache) → یعنی همون کش توی RAM بوده (حتی سریع‌تر).

اگر initiator = service-worker و سایز Bold (مثلاً 60 KB) → یعنی SW رفت شبکه و تازه فایل رو گرفت.

اگر initiator = other, size = service worker یعنی:

«این درخواست رو مرورگر ساخته (نه کد شما مستقیم)، ولی جواب نهایی رو Service Worker داده.»

Accept Cookies
Accept Cookies
[your-shortcode]