GH GambleHub

交互速度和延遲的UI

1)接口速度是什麼

速度不僅僅是頁面下載。這是四個延遲的總和:

1.Input latency-從手勢到事件處理程序。

2.Network latency-在後端/kesh響應之前。

3.Render latency-主流(JS/CSS/layout/paint)上的處理。

4.動畫後退-幀的平滑性和穩定性。

目的:用戶立即看到動作已經開始,過程在哪裏移動;實際結果可以預見。

2)人類感知閾值

≤ 50毫秒是「閃電」(打印回聲,按鍵)。
≤ 100毫秒-「瞬間」(點擊→視覺響應)。
≤ 200毫秒-對於大多數UI反應是允許的。
≤ 1000毫秒-可以容忍明顯進步/骨架。

💡 10 s-用戶失去上下文,需要升級(保存、延遲、符號化)。

3)鐵路模型和目標預算

R(響應): 輸入響應

點擊→視覺響應≤ 100毫秒。
焦點/hover → ≤ 80-120毫秒。

A(動畫): 流暢

60 FPS ⇒框架16。7毫秒;從框架中進行重型操作。
我們只動畫「變形」/「opacity」。

I (Idle): 背景任務

分為50毫秒≤插槽,使用idle窗口。

L (Load): 下載

TTFB ≤ 200毫秒,LCP ≤ 2。5 s,INP ≤ 200毫秒,CLS ≤ 0。1.

4)KPI和速度差

INP (Interaction to Next Paint): p75 <200 ms(良好),200-500(需要改進)。
Long Tasks(>50 ms): LT <5%的幀比例。
TTFB p 75<200 ms (kesh/Edge), LCP p 75<2.5頁。
First User Feedback (FUF):第一次視覺確認動作的時間≤ 100毫秒。
表單的時間可用:在輸入第一個字段之前的≤ 1。

5) UX即時響應模式

1.樂觀更新:我們立即更改UI(平衡/投註/喜歡),在錯誤時回滾。
2.如果知道結構,則使用骨架代替旋轉器。
3.進度/階段:確定性進度,如果過程長度已知。
4.本地提示:即時烤面包/state「發送」……≤ 100毫秒。
5.預裝意圖:hover/可見性 → 「prefetch」/「preload」。

6)減少延誤的技術技巧

6.1 Input → Render

在移動上拍攝300毫秒的延遲:'<meta name="viewport" content="width=device-width,initial-scale=1">"。

Skroll/tach: 'addEventListener('touchstart「,handler, {passive: true}」).

點擊處理-進入微調或「requestAnimationFrame」以快速渲染確認。
避免layout-thrash:讀取/寫入layout-戰鬥。

6.2 JS和主流

拆分樂隊(代碼分割),按路線加載。
重型計算→ Web Worker。
使用'scheduler。後臺任務的postTask"/"requestIdleCallback"。

關鍵CSS-inline;JS с `defer`/`async`.

列表虛擬化,「內容可見:自動」,「內容:內容」。

6.3渲染和動畫

動畫「轉換/操作性」;不要在數百個元素上動畫「height/left/box-shadow」。
「will-change」暫時放在動畫之前;然後清理。
精靈/矢量代替巨大的PNG;避免重創。

6.4網絡和kesh

Edge-кеш (CDN), `cache-control`, `stale-while-revalidate`.

Preconnect到關鍵域;Early Hints (103), HTTP/2/3.

意向預告(hover/viewport)。
Streaming/SSR+漸進水合/島嶼。

7) Debowns/trottling和隊列

Debowns-用於輸入時搜索(150-300毫秒)。
Trottling-用於滾動/重組(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)下載和反饋模式

Skeleton → Content(無剪切、固定高度)。
Shimmer 1200-1600 ms,振幅≤ 20%。
樂觀卡:灰色預覽+文本-我們在數據到來時替換。
錯誤:短回程橫幅,重播的idempotency密鑰。

9)網絡策略快速響應

關鍵行動(利率/付款):
  • 立即確認UI(樂觀),後端-偶像;
  • 在taymout(3-5 c)中,狀態顯示「已獲得,正在處理」+背景中繼;
  • WebSocket/SSE用於狀態,backoff 1-2-4-8。

Pre-dobs:按計劃交換緩存,預告流行路由。

邊緣功能:驗證/聚合更接近用戶。

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');
}
});
});
意向預告(hover/viewport):
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降解的Alerts。
腳本測試:記錄參考時間「點擊→更改DOM」。

12) iGaming的細節

投註/購買:
  • UI:即時鎖定按鈕狀態(pressed → busy),雙打-敬酒「接受」。
  • 後端:按利率計算的偶數鍵;狀態-通過WebSocket;taymaut →透明的「pending」。
  • UI預算:FUF ≤ 100毫秒,最終確認≤ 1 c(如果更長-顯示計時器/原因)。

Spin/Reveal:

加速≤ 200毫秒,均勻旋轉,衰減300-500毫秒;沒有無限循環。
獲勝存根-無頻率,可讀文本/總和(AAA)。

Live系數:
  • Delta補丁每250-1000毫秒一次,戰鬥;
  • 視覺diff(箭頭/顏色/厚度),沒有布局跳躍;
  • 對hover/focus的更新進行反破壞。
比賽/排名:
  • batchami 40-60毫秒帳戶的生成,表格;
  • 粘貼帽,行虛擬化。

13)反模式

對點擊沒有即時反應(等待網絡)。
數百個元素上的重型「濾鏡/盒影」動畫。
一個巨大的JS樂隊>1-2 MB到關鍵路徑。
「空白中的旋轉器」大於1-2,沒有進展/骨架。
以單個圖標讀取/寫入布局(布局擦除)。
移動功能上的唯一萬無一失。

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支票速度清單

反應

  • Click/tap →視覺響應≤ 100毫秒;→輸入回聲≤ 50毫秒。
  • 移動上沒有300毫秒的延遲。
  • INP p 75 ≤ 00毫秒;Long Tasks的份額≤ 5%。

下載

  • TTFB ≤ 200毫秒;LCP ≤ 2.5 c;CLS ≤ 0.1.
  • 骨架/進步代替「懸掛」旋轉器。

渲染

  • 僅動畫中的「轉換/opacity」;陣列上沒有「重」陰影。
  • content-visibility/虛擬化長列表。

網絡

  • Edge-kesh, preconnect, prefettch是出於意圖。
  • 針對關鍵行動的偶然性和回避性。

A11y

  • 「prefers-reduced-motion」得到了支持。
  • Hover內容可通過焦點/鍵盤訪問。

16)設計系統文檔

「Latency Budgets」:閾值表(tap,hover,modal,toast,形式)。
「即時反饋」:樂觀動作+回滾模式。
「Prefetch by Intent」:海德和實用程序。
「Performance Playbook」:性能表和RUM Alerta。
「Do/Do n't」:帶數字的快速/慢速腳本示例。

簡短摘要

交互速度是即時響應+可預測的結果傳遞。保持100毫秒為第一反饋神聖的預算,優化網絡(Edge/kesh/prefetch),卸載主流,只動畫,並應用樂觀的模式。然後,界面感覺生動、清晰和穩定--尤其是在高風險和真實時間的iGaming場景中。

Contact

與我們聯繫

如有任何問題或支援需求,歡迎隨時聯絡我們。我們隨時樂意提供協助!

Telegram
@Gamble_GC
開始整合

Email 為 必填。Telegram 或 WhatsApp 為 選填

您的姓名 選填
Email 選填
主旨 選填
訊息內容 選填
Telegram 選填
@
若您填寫 Telegram,我們將在 Email 之外,同步於 Telegram 回覆您。
WhatsApp 選填
格式:國碼 + 電話號碼(例如:+886XXXXXXXXX)。

按下此按鈕即表示您同意我們處理您的資料。