許多因素都會影響網頁效能。即使網頁沒有變更,Lighthouse 效能分數也會因為網路和網路技術的固有變化而改變。
變數來源
效能評估的變異性透過多個影響程度不同的管道導入。下表提供幾個常見指標變異來源、對結果的影響,以及這些可能在不同環境中可能發生的情況。
來源 | 影響程度 | 一般使用者 | PageSpeed Insights | 控制組的研究室 |
---|---|---|---|---|
網頁非確定性 | 高 | 可能 | 可能 | 可能 |
區域網路的變異性 | 高 | 可能 | 不願意 | 不願意 |
第 1 級網路變異性 | 媒介 | 可能 | 可能 | 可能 |
網路伺服器的變異性 | 低 | 可能 | 可能 | 可能 |
用戶端硬體的變異性 | 高 | 可能 | 不願意 | 不願意 |
用戶端資源爭用 | 高 | 可能 | 可能 | 不願意 |
瀏覽器非確定性 | 媒介 | 埃及 | 埃及 | 埃及 |
以下將進一步說明變異數的來源,以及這些變異值對於 Lighthouse 執行階段 + 環境組合對最可能組合的影響。雖然這三種環境中可以使用節流和模擬節流方法,但一般使用者會使用模擬節流功能。
網頁非確定性
網頁可包含邏輯不準確的邏輯,因而改變了網頁的使用體驗。舉例來說,A/B 版本測試會變更載入的版面配置和素材資源,或是根據廣告活動進度採用不同的廣告體驗。這是刻意且不可移除的變異來源。如果頁面有所變動,會損害效能,Lighthouse 應能找出此情況。這裡唯一的緩解措施就是網站擁有者的部分,可確保在不同執行期間測試該網頁的完全相同版本。
區域網路變化版本
區域網路在封包遺失率、變動流量優先順序和最後一里網路壅塞方面,本身都有變化。如果使用者的路由器價格較低,且許多裝置共用有限頻寬,這種情況通常會最容易受害。已套用的節流功能可以套用最短要求延遲時間和遮蓋基礎重試作業的最大處理量,以緩解部分效果。「模擬」節流會自行重播網路活動以緩解這些效果。
第 1 級網路變化版本
網路互連網路通常非常穩定且幾乎沒有影響,但跨地理要求 (例如從美國評估中國網站的效能) 可能會開始體驗從第 1 級網路躍點引進的高延遲時間。已套用:透過網路節流功能調節部分效果。「模擬」節流會自行重播網路活動以緩解這些效果。
網路伺服器的變數
網路伺服器會載入變數,而且不一定會以相同的延遲時間回應。 低流量網站採用共用託管基礎架構,通常較容易發生這種情況。已套用,會在網路節流中套用最短的要求延遲時間,藉此調節部分效果。模擬過熱功能容易受到這種影響,但整體的影響通常比其他網路變異性低。
用戶端硬體變數
用於載入網頁的硬體可能會對效能產生極大影響。 已套用的節流功能無法大幅減少這個問題。模擬功能會在模擬期間限制 CPU 工作的理論執行時間,藉此部分解決這個問題。
用戶端資源爭用
在 Lighthouse 執行時,在同一部機器上執行的其他應用程式可能會導致 CPU、記憶體和網路資源發生爭用情況。惡意軟體、瀏覽器擴充功能和防毒軟體會對網路效能造成顯著影響。多用戶群伺服器環境 (例如 Travis、AWS 等) 也可能受到這些問題的影響。一次執行多個 Lighthouse 執行個體時,通常也會導致結果失真。這個問題容易產生已套用的節流功能。模擬節流功能會自行重播網路活動並限制 CPU 執行作業,藉此部分緩解此問題。
瀏覽器非確定性
瀏覽器在執行工作時就有變化,也會影響網頁的載入方式。對套用節流來說是一件可以避免的,因為在當天結束時,只會回報瀏覽器觀察到的任何資料。「模擬」節流功能可以自行模擬執行作業,而僅會在預估作業中重複使用瀏覽器的工作執行時間,藉此減緩這種影響。
節流策略的影響
下表包含數個常見指標變異來源、它們對結果的一般影響,以及不同 Lighthouse 節流策略可降低其影響的程度。如要進一步瞭解不同的節流策略,請參閱節流說明文件。
來源 | 影響程度 | 模擬節流 | 已套用節流 | 不進行節流 |
---|---|---|---|---|
網頁非確定性 | 高 | 無指出 | 無指出 | 無指出 |
區域網路的變異性 | 高 | 遷移 | 部分模擬 | 無指出 |
第 1 級網路變異性 | 媒介 | 遷移 | 部分模擬 | 無指出 |
網路伺服器的變異性 | 低 | 無指出 | 部分模擬 | 無指出 |
用戶端硬體的變異性 | 高 | 部分模擬 | 無指出 | 無指出 |
用戶端資源爭用 | 高 | 部分模擬 | 無指出 | 無指出 |
瀏覽器非確定性 | 媒介 | 部分模擬 | 無指出 | 無指出 |
處理變化版本的策略
隔離外部因素
- 盡可能區隔出您的網頁與第三方影響。即使他人的變數失敗,肯定不容易受到攻擊。
- 在測試期間區隔自有程式碼的非確定性。如果您有隨機顯示的動畫,成效數據可能會隨機出現!
- 盡可能區隔測試伺服器與網路波動。如果有穩定性問題,請使用相同網路中的 localhost 或機器。
- 區隔您的用戶端環境,避免受到外部影響 (例如防毒軟體和瀏覽器擴充功能) 的影響。盡可能使用專用裝置進行測試。
如果您的機器資源有限,或想建立乾淨的環境並不容易,請使用 PageSpeed Insights 或 WebPageTest 等代管研究室環境執行測試。在持續整合的情況下,請盡可能使用專屬的伺服器。免費的 CI 環境和「爆發性」執行個體通常容易變動。
多次執行 Lighthouse
建立心理或程式輔助失敗的門檻時,請使用中位數、第 90 個百分位數或最低值等匯總值,而非單一測試。
Lighthouse 分數中位數為 5 分,和執行 1 次時保持穩定兩倍,pwmetrics 等工具可以自動執行 Lighthouse。與完全不進行測試相比,使用最小值也有大幅改善,而且實作方式非常簡單,只要執行最多 5 次 Lighthouse,直到資料通過測試即可!