وقتی صفحهای چندین درخواست شبکه همزمان انجام میدهد، این درخواستها اغلب برای پهنای باند یکسان رقابت میکنند. دادههای غیربحرانی مانند تجزیهوتحلیل، ثبت، یا همگامسازی پسزمینه باید اولویت کمتری داشته باشند تا واکشی دادههای بحرانی یا آغازشده توسط کاربر بتواند سریعتر تکمیل شود.
نحوه پیادهسازی
- شناسایی درخواستهای پسزمینه: تعیین کنید کدام فراخوانیهای
fetch()برای دادههای غیرضروری است که بر تجربه فوری کاربر تأثیر نمیگذارد. - اعمال اولویت واکشی: گزینه
priority: 'low'را به شیء مقداردهی اولیهfetch()اضافه کنید.
کد نمونه
// Use high priority (default) for critical UI updates
const criticalData = await fetch('/api/data');
// Explicitly deprioritize background analytics
fetch('/api/analytics', {
method: 'POST',
body: JSON.stringify(eventData),
// Lower the priority to prevent network contention
priority: 'low'
});
روالهای مطلوب
- باید از
priority: 'low'برای واکاوش، چراغهای راهنما، یا دادههای دورسنجی که برای نمای فعلی لازم نیست استفاده کنید. - باید از
priority: 'low'برای «پیشواکشی» دادههایی که کاربر ممکن است بعداً نیاز داشته باشد استفاده کنید و مطمئن شوید که این کار سرعت آنچه را که اکنون نیاز دارد کاهش نمیدهد. - از
priority: 'low'برای واکشیهایی که برای تجربه کاربری حیاتی هستند استفاده نکنید. - از کلید منسوخشده
importanceدر شیء گزینههای واکشی استفاده نکنید. کلید درستpriorityاست.
راهبرد جایگزین
گزینه priority در Fetch API یک ارتقای پیشرو است. مرورگرهایی که از آن پشتیبانی نمیکنند این گزینه را نادیده میگیرند و با درخواست با اولویت پیشفرض رفتار میکنند. برای استفاده پایه، به منطق بازگشت یا تشخیص ویژگی صریح نیازی نیست.