在 About Performance 的最後提供了一些關注的點,但感受比較零散,有沒有理論體系化的思想做爲依據,經過查找資料,發現了兩種指導方式:RAIL Model 和 PRPL Pattern ,下面是帶有我的理解的部分翻譯。git
翻譯時 RAIL Model 原文 Last updated 2019-02-12 ,PRPL Pattern 原文 Last updated: Nov 5, 2018 。github
RAIL 是一個以用戶爲中心的性能模型,它將用戶的體驗分解爲關鍵的操做。RAIL 的目標和方針旨在幫助開發人員和設計人員確保每個操做都有良好的用戶體驗。經過設計一個考慮性能的結構,RAIL 使設計人員和開發人員可以有效的關注影響用戶體驗最大的工做。web
每一個 web 應用程序的生命週期都有四個不一樣的方面,性能以不一樣的方式適合它們:瀏覽器
在 RAIL 的上下文中,目標(goals)和方針(guidelines)有特殊的含義:緩存
讓用戶成爲你的性能工做的焦點。下表描述了用戶如何感知性能延遲的關鍵指標:安全
延遲時間 | 用戶反應 |
---|---|
0 - 16ms | 人們特別擅長跟蹤運動,若是動畫不流暢,他們就會對運動心生反感。 用戶能夠感知每秒渲染 60 幀的平滑動畫轉場。也就是每幀 16ms(包括瀏覽器將新幀繪製到屏幕上所需的時間),留給應用大約 10ms 的時間來生成一幀。 |
0 - 100ms | 在此時間窗口內響應用戶操做,他們會以爲獲取的結果是當即的。時間再長,操做與反應之間的聯繫就會中斷。 |
100 - 300ms | 用戶會體驗到輕微的可感知延遲。 |
300 - 1000ms | 在此窗口內,延遲感受像是一個連續任務天然進展的一部分。對於網絡上的大多數用戶,加載頁面或更改視圖表明着一個任務。 |
1000+ms | 超過 1s ,用戶對正在執行的任務失去注意力。 |
10,000+ms | 用戶感到失望,可能會放棄任務,以後他們或許不會再回來。 |
用戶對性能延遲的感知不一樣,這取決於網絡條件和硬件。例如,經過快速 Wi-Fi 鏈接在功能強大的臺式機上,1000ms 內的加載體驗是合理的,所以用戶已經習慣了 1000ms 的加載體驗。但低於 3G 鏈接速度較慢的移動設備來講,5000ms 內的加載體驗是一個更實際的目標,所以移動用戶一般更耐心。網絡
在 100ms 內完成由用戶輸入啓動的過分。用戶花費大部分時間是在等待站點響應他們的輸入,而不是等待站點加載。app
目標是在 100ms 內響應輸入,那麼爲何咱們的預算只有 50ms ?這是由於除了輸入處理以外,一般還有其它的工做正在處理,而這部分工做佔據了可接受輸入響應的部分時間。若是應用程序在空閒時間以建議的 50ms 執行工做,這意味着若是在其中一個工做塊期間發生輸入,則輸入的排列等候能夠長達 50ms。根據這一點,假設只有剩餘 50ms 可用於實際的輸入處理是安全的。此效果在下圖中可見,顯示了在空閒任務隊列中,輸入是如何接受的,從而縮短了可用的處理時間:ide
最大化空閒時間以增長頁面在 50ms 內響應用戶輸入的可能性。工具
當頁面加載緩慢時,用戶的注意力就會轉移,用戶會認爲任務已經中斷。快速加載的站點具備更長的平均會話時間、更低的跳出率和更高的廣告可視性。
PRPL 描述了一種模式,用於使網頁更快的加載並變得可交互:
Apply instant loading with the PRPL pattern 中主要結合了一種工具進行講解,偏重實際操做,這裏就很少介紹了。