

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 單頁應用程式的路由變更時序
<a name="CloudWatch-RUM-route-change-timing"></a>

在傳統的多頁面應用程式中，當使用者請求載入新內容時，使用者實際上是從伺服器請求新的 HTML 網頁。因此，CloudWatch RUM Web 用戶端會使用一般效能 API 指標擷取載入時間。

但是，單頁 Web 應用程式使用 JavaScript 和 Ajax 來更新介面，而無需從伺服器載入新頁面。瀏覽器時序 API 不會記錄單頁更新，而是使用路由變更時序。

CloudWatch RUM 支援監控來自伺服器的完整頁面載入和單頁更新，但差異如下：
+ 對於路由變更時序，沒有瀏覽器提供的指標，例如 `tlsTime`、`timeToFirstByte` 等。
+ 對於路由變更時序，`initiatorType` 欄位將為 `route_change`。

CloudWatch RUM Web 用戶端會監聽可能導致路由變更的使用者互動，且在記錄這類使用者互動時，Web 用戶端會記錄時間戳記。然後，如果下列項目皆為 true，路由變更時序會開始：
+ 瀏覽器歷史記錄 API (瀏覽器下一頁和上一頁按鈕除外) 用於執行路由變更。
+ 路由變更偵測的時間與最近的使用者互動時間戳記之間的差異小於 1000 ms。這可避免資料扭曲。

然後，一旦路由變更時序開始，如果沒有正在進行的 AJAX 請求和 DOM 變動，則該時序即完成。然後，將使用最近完成活動的時間戳記作為完成時間戳記。

如果正在進行的 AJAX 請求或 DOM 變動超過 10 秒 (預設情況下)，路由變更時序將逾時。在此情況下，CloudWatch RUM Web 用戶端將不再記錄此路由變更的時序。

因此，路由變更事件的持續時間計算方式如下：

```
(time of latest completed activity) - (latest user interaction timestamp)
```