Logo GH

نرخ تعامل و UI تاخیر

1) سرعت رابط چیست ؟

سرعت فقط بارگذاری صفحه نیست. این مجموع چهار تاخیر است:

1. تأخیر ورودی - از ژست تا گرداننده رویداد.

2. تأخیر شبکه - قبل از پاسخ backend/cache.

3. تأخیر رندر - پردازش در جریان اصلی (JS/CSS/طرح/رنگ).

4. تاخیر انیمیشن - صاف بودن و ثبات فریم ها.

هدف: کاربر بلافاصله می بیند که عمل آغاز شده است و روند در حال حرکت است. نتیجه واقعی قابل پیش بینی است.

2) آستانه ادراک انسان

≤ 50 ms - «رعد و برق سریع» (چاپ اکو، مطبوعات کلیدی).
≤ 100 میلی ثانیه - «فورا» (کلیک کنید → پاسخ بصری).
≤ 200 میلی ثانیه - برای اکثر واکنش های UI قابل قبول است.
≤ 1000 میلی ثانیه - قابل تحمل با پیشرفت روشن/اسکلت.

💡 10 s - کاربر زمینه را از دست می دهد، تشدید مورد نیاز است (ذخیره، به تعویق انداختن، اطلاع رسانی).

3) مدل راه آهن و بودجه هدف

R (پاسخ): پاسخ ورودی

Click/tap → پاسخ تصویری ≤ 100 میلی ثانیه

تمرکز/شناور → ≤ 80-120 میلی ثانیه.

A (انیمیشن): صاف بودن

فریم ⇒ 60 FPS 16. 7 میلی ثانیه ؛ عملیات سنگین به خارج از قاب.
ما فقط «transform »/« opacity» را تحریک میکنیم.

I (بیکار): وظایف پس زمینه

تقسیم به اسلات ≤ 50 میلی ثانیه، استفاده از پنجره های بیکار.

L (بار): بارگیری

TTFB ≤ 200 میلی ثانیه، LCP ≤ 2. 5S، INP ≤ 200ms، CLS ≤ 0. 1.

4) KPI و هشدار سرعت

INP (تعامل با رنگ بعدی): p75 <200 ms (خوب)، 200-500 (بهبود یافته).
وظایف طولانی (> 50 ms): نسبت فریم ها با LT <5٪.
TTFB p75 <200 ms (حافظه پنهان/لبه)، LCP p75 <2. 5 پ.
اولین بازخورد کاربر (FUF): زمان تا اولین تایید بصری عمل 100 میلی ثانیه ≤.
زمان قابل استفاده برای فرم ها ≤ 1 ثانیه قبل از وارد شدن اولین فیلد.

5) الگوهای پاسخ فوری UX

1. به روز رسانی خوش بینانه: تغییر UI بلافاصله (تعادل/شرط/مانند)، بازگشت به خطا.
2. اسکلت به جای یک اسپینر اگر ساختار شناخته شده است.
3. پیشرفت/مراحل: نوار مترقی قطعی اگر طول فرآیند شناخته شده است.
4. راهنمایی های محلی: نان تست فوری/دولت «ارسال»... ≤ 100 میلی ثانیه.
5. قصد پیش بارگذاری: شناور/دید → 'prefetch '/' preload'.

6) تکنیک های کاهش تاخیر

6. 1 ورودی → رندر کردن

Shoot 300ms delay on mobile: '<meta name = "viewport" content = "width = device-width, initial-scale = 1"> ".
شنوندگان منفعل برای پیمایش/tach: 'addEventListener (' touchstart ', handler, {passive: true})'.
پردازش کلیک کنید - در یک کار میکرو و یا 'requestAnimationFrame' به سرعت رسم تایید.
اجتناب از طرح بندی: طرح خواندن/نوشتن - butch.

6. 2 JS و جریان اصلی

بسته های جداگانه (تقسیم کد)، در امتداد مسیرها بارگیری کنید.
محاسبات سنگین → Web Worker.
از ویرایشگر استفاده کنید. post 'Task '/' requestIdleCallback' برای وظایف پس زمینه.
CSS بحرانی - درون خطی ؛ JS с «تعویق »/« async».
مجازی سازی لیست، 'content-visibility: auto'، 'content: content'.

6. 3 رندر و انیمیشن

پویانمایی «تبدیل/کدورت» ؛ «ارتفاع/چپ/جعبه سایه» را بر روی صدها عنصر تحریک نکنید.
'will-change' به طور موقت قبل از انیمیشن قرار داده شده است ؛ تمیز کردن بعد از.

Sprites/بردار به جای PNG های بزرگ ؛ اجتناب از تاری شدید

6. 4 شبکه و کش

Edge- кеш (CDN), 'cache-control', 'stale-while-revalidate'.
پیش اتصال به حوزه های بحرانی ؛ نکات اولیه (103)، HTTP/2/3.
پیش فرض به قصد (شناور/نمایش).
جریان/SSR + هیدراتاسیون پیشرفته/جزایر.

7) debowns/throttling و صف

بحث - برای جستجو در طول ورودی (150-300 میلی ثانیه).
Throttling - برای پیمایش/تغییر اندازه (100-200 میلی ثانیه).
صف/به روز رسانی UI برای رویدادهای مکرر (داده های زنده).

js const debounce = (fn, ms=200)=>{let t; return (...a)=>{clearTimeout(t); t=setTimeout(()=>fn(...a),ms)}}
const throttle = (fn, ms=120)=>{let t=0; return (...a)=>{const n=Date. now(); if(n-t>ms){t=n; fn(...a)}}}

8) الگوهای بارگیری و بازخورد

اسکلت → محتوا (بدون ترفند، ارتفاع ثابت).
روشن و خاموش شدن 1200-1600 میلی ثانیه، دامنه ≤ 20٪.
کارت خوش بینانه: پیش نمایش خاکستری + متن - ما آن را جایگزین زمانی که داده ها می رسد.
خطا: بنر کوتاه تکرار، کلیدهای idemotency برای تکرارها.

9) استراتژی های شبکه برای پاسخ سریع

اقدامات بحرانی (نرخ/پرداخت):
  • تأیید UI بلافاصله (خوش بینانه)، backend - idempotent ؛
  • هنگامی که زمان (3-5 ثانیه), نمایش وضعیت «دریافت, پردازش» + پس زمینه retrays;
  • WebSocket/SSE برای وضعیت ها، بازپرداخت 1-2-4-8 s.

پیش داده: کش گرم کردن در یک برنامه، prefetch از مسیرهای محبوب.

توابع لبه: اعتبار سنجی/جمع آوری نزدیک به کاربر.

10) کد قطعه UI سریع

پاسخ فوری به کلیک (بازخورد قبل از پاسخ شبکه):
js btn. addEventListener('click', () => {
btn. classList. add ('is-busy') ;//requestAnimationFrame instant visual response (async () => {
try {
const res = await fetch('/api/action', { method: 'POST', body: payload });
if (!res.ok) throw new Error('fail');
btn. classList. add('is-done');
} catch {
btn. classList. remove('is-busy'); btn. classList. add('is-error');
}
});
});
پیشوند قصد) شناور/درگاه نما (:
js const prefetch = url => fetch(url, { credentials:'include', priority:'low' }). catch(()=>{});
document. querySelectorAll('a[data-prefetch]'). forEach(a=>{
a. addEventListener('mouseenter', () => prefetch(a. href), { once:true });
const io=new IntersectionObserver(e=>{ if(e[0].isIntersecting){prefetch(a. href); io. disconnect();} });
io. observe(a);
});
CSS برای انیمیشن ها و اسکلت های «ارزان»:
css
.btn. is-busy { pointer-events:none; }
.skeleton { position:relative; background: var(--bg-elevated); overflow:hidden; }
.skeleton::after {
content:""; position:absolute; inset:0;
background: linear-gradient(90deg, transparent, rgba(255,255,255,.12), transparent);
animation: shimmer 1. 4s infinite;
}
@keyframes shimmer { from { transform: translateX(-100%);} to { transform: translateX(100%);} }

11) تشخیص و نظارت

زمینه: RUM (معیارهای زمینه) p75 بر اساس کشور/شبکه/دستگاه.
روی «input → handler → network → paint» کلیک کنید.
نشانه گذاری منطقه قرمز: نشانگرهای وظیفه طولانی، زمان مسدود کردن، لیست مسیر آهسته.
هشدار تخریب INP/LCP/TTFB.
تست سناریو: ثبت زمان مرجع «کلیک → تغییر DOM».

12) ویژگی های iGaming

پیشنهاد/خرید:
  • UI: تثبیت فوری حالت دکمه (فشرده → مشغول)، دو - نان تست «پذیرفته شده».
  • Backend: کلید idempotent با نرخ ؛ وضعیت - از طریق WebSocket ؛ timeout → شفاف «در انتظار».
  • بودجه UI: FUF ≤ 100 میلی ثانیه، تأیید نهایی 1 ثانیه ≤ (در صورت طولانی تر، تایمر/دلیل را نشان می دهیم).
چرخش/آشکار:
  • شتاب ≤ 200 میلی ثانیه، چرخش یکنواخت، تضعیف 300-500 میلی ثانیه ؛ بدون چرخه های بی پایان
  • برنده شدن - بدون بارق، متن/مقدار قابل خواندن (AAA).
ضرایب زنده:
  • تکه های دلتا یک بار در هر 250-1000 میلی ثانیه، butching ؛
  • تفاوت بصری (فلش/رنگ/ضخامت) بدون طرح جهش ؛
  • به روز رسانی ضد گزاف گویی در شناور/تمرکز.
مسابقات/رتبه بندی:
  • افزایش حساب توسط دسته 40-60 میلی ثانیه، رقم جدول ؛
  • هدر چسبنده، مجازی سازی رشته.

13) ضد الگوهای

بدون پاسخ فوری برای کلیک (انتظار برای شبکه).
انیمیشن های سنگین «فیلتر/جعبه سایه» در صدها عنصر.
یک بسته بزرگ JS> 1-2 مگابایت در هر مسیر بحرانی.
اسپینر در Void بیش از 1-2 بدون پیشرفت/اسکلت است.
خواندن/نوشتن طرح در یک تیک (thrashing طرح).
ویژگی های شناور تنها در تلفن همراه.

14) نشانه های سرعت (سیستم طراحی)

json
{
"latencyBudget": {
"tapFeedbackMs": 100,
"keyEchoMs": 50,
"hoverMs": 120,
"pressMs": 90,
"modalInMs": 240,
"toastInMs": 200
},
"webVitalsTargets": { "INP": 200, "LCP": 2500, "CLS": 0. 1, "TTFB": 200 },
"animation": {
"easing": { "std": "cubic-bezier(0. 2,0,0. 2,1)", "acc": "cubic-bezier(0. 4,0,1,1)" },
"duration": { "hover": 160, "active": 90, "overlay": 240 }
}
}

15) چک لیست QA سرعت

پاسخ دادن

  • کلیک کنید/شیر → پاسخ بصری ≤ 100 میلی ثانیه → ورودی اکو ≤ 50ms.
  • تاخیر 300 میلی ثانیه در تلفن همراه.
  • INP p75 ≤ 200ms ؛ وظایف طولانی ≤ 5٪ سهم دارند.

در حال بارگذاری

  • TTFB ≤ 200ms ؛ ≤ LCP 2 5 ثانیه ؛ CLS ≤ 0 1.
  • اسکلت/پیشرفت به جای «حلق آویز» اسپینر.

رندر کردن

  • فقط «تبدیل/کدورت» در انیمیشن ها ؛ هیچ سایه «سنگین» در آرایه وجود دارد.
  • محتوا دید/مجازی سازی برای لیست های طولانی.

شبکه

  • کش لبه، preconnect، پیشوند قصد.
  • ناتوانی و عقب نشینی برای اقدامات انتقادی.

A11y

  • 'prefers-reduced-motion' پشتیبانی می شود.
  • محتوای شناور توسط تمرکز/صفحه کلید در دسترس است.

16) مستندات سیستم طراحی

«بودجه تاخیر»: جدول آستانه (شیر، شناور، معین، نان تست، فرم).
«بازخورد فوری»: الگوهای عمل خوش بینانه + پولبک.
«Prefetch by Intent»: راهنمای و آب و برق.
«Playbook عملکرد»: لیست های پروفایل و هشدارهای RUM.
«انجام دادن/انجام ندادن»: نمونه هایی از اسکریپت های سریع/آهسته با اعداد.

خلاصه ای کوتاه

سرعت تعامل پاسخ فوری + تحویل قابل پیش بینی از نتیجه است. 100ms را به عنوان یک بودجه مقدس برای اولین بازخورد نگه دارید، شبکه را بهینه کنید (Edge/cache/prefix)، جریان اصلی را بارگیری کنید، فقط خواص ارزان را تحریک کنید و الگوهای خوش بینانه را اعمال کنید. سپس رابط کاربری پر جنب و جوش، قابل فهم و انعطاف پذیر است - به ویژه در سناریوهای iGaming در زمان واقعی.

Contact

با ما در تماس باشید

برای هرگونه سؤال یا نیاز به پشتیبانی با ما ارتباط بگیرید.ما همیشه آماده کمک هستیم!

شروع یکپارچه‌سازی

ایمیل — اجباری است. تلگرام یا واتساپ — اختیاری.

نام شما اختیاری
ایمیل اختیاری
موضوع اختیاری
پیام اختیاری
Telegram اختیاری
@
اگر تلگرام را وارد کنید — علاوه بر ایمیل، در تلگرام هم پاسخ می‌دهیم.
WhatsApp اختیاری
فرمت: کد کشور و شماره (برای مثال، +98XXXXXXXXXX).

با فشردن این دکمه، با پردازش داده‌های خود موافقت می‌کنید.