性能是指系統的響應能力----即對外部刺激出反應時所需要的時間或在某段時間內所處的事數。
資源需求--提高計算效率(改進算法),減少計算開銷(旁路引用),管理事件率率(降低採樣頻率),綁定執行次數(限制迭代次數),綁定隊列大小。
資源管理--引入併發性,維護數據或計算的多個副本(客戶端緩存),增加可用資源。
資源仲裁--先進先出,固定優先級調度(基於語義重要性、期限單調或速率單調),動態優先級調度(循環調度,最早的最後期限優先),靜態調度(先發制人點和資源分配順序脫機確定)。
1 <html>
3 <head>
5 <title>stark wang</title>
7 <script type="text/javascript">
9 var start = new Date().getTime();
11 function onLoad() {
13 var now = new Date().getTime();
15 var latency = now - start;
17 alert("page loading time: " + latency);
19 }
21 </script>
23 </head>
25 <body onload="onLoad()">
27 <!- Main page body goes from here. -->
29 </body>
31 </html>
結果:
再比如:
上面的腳本計算在執行頭部的第一個JavaScript後加載頁面所需的時間,但是它並沒有給出從服務器獲取頁面所需的時間,或者頁面的初始化生命週期。
******************************************
******************************************
1 <!DOCTYPE html>
3 <html lang="en">
5 <head>
7 <meta charset="UTF-8">
9 <title>stark wang</title>
11 </head>
13 <script>
15 function showNavigationDetails() {
17 // 入口
19 const [entry] = performance.getEntriesByType("navigation");
21 // 在控制檯可以看到很多參數
23 console.table(entry.toJSON());
25 }
27 </script>
29 <body onload="showNavigationDetails()">
33 </body>
35 </html
>結果:
自己去測試
這個接口省去我們很多時間,不再需要獲取時間戳了
****************************
***************************
Python獲取WEB各階段響應時間
****************************
****************************
1 let timing = performance.timing,
3 start = timing.navigationStart,
5 dnsTime = 0,
7 tcpTime = 0,
9 firstPaintTime = 0,
11 domRenderTime = 0,
13 loadTime = 0;
17 dnsTime = timing.domainLookupEnd - timing.domainLookupStart;
19 tcpTime = timing.connectEnd - timing.connectStart;
21 firstPaintTime = timing.responseStart - start;
23 domRenderTime = timing.domContentLoadedEventEnd - start;
25 loadTime = timing.loadEventEnd - start;
29 console.log('DNS解析時間:', dnsTime , '\nTCP建立時間:', tcpTime, '\n首屏時間:', firstPaintTime,
31 '\ndom渲染完成時間:', domRenderTime, '\n頁面onload時間:', loadTime);
結果: