效能調優第一步是測量。本文整理伺服器端與客戶端兩大維度的計時技巧。
DateTime _start;
protected void Application_BeginRequest(object sender, EventArgs e)
{ _start = DateTime.Now; }
protected void Application_EndRequest(object sender, EventArgs e)
{
TimeSpan ts = DateTime.Now - _start;
Response.Write($"<!-- 請求總耗時: {ts.TotalMilliseconds} ms -->");
}
DateTime _pageStart;
protected override void OnPreInit(EventArgs e)
{ _pageStart = DateTime.Now; base.OnPreInit(e); }
protected override void OnLoadComplete(EventArgs e)
{
base.OnLoadComplete(e);
TimeSpan ts = DateTime.Now - _pageStart;
Response.Write($"<div style='color:gray'>頁面處理耗時: {ts.TotalMilliseconds} ms</div>");
}
<head>
<script> var t1 = performance.now(); </script>
</head>
<body>
... 頁面內容 ...
<div id="perf"></div>
<script>
window.addEventListener('load', () => {
document.getElementById('perf').innerText =
'頁面完全載入耗時: ' + (performance.now() - t1).toFixed(2) + ' ms';
});
</script>
</body>
使用 performance.now() 取代 Date.getTime(),精度達微秒級,且不受系統時間調整影響。
生產環境建議整合 APM 工具,開發階段用上述輕量方式快速定位瓶頸。