全部產品
Search
文件中心

Cloud Monitor:Web & H5 整合和使用SessionReplay和熱力圖

更新時間:Mar 17, 2026

功能概述

面對日益增長的使用者體驗要求和激烈的市場競爭,業務團隊迫切需要更加深入地瞭解使用者在與應用頁面互動的行為,針對性地進行頁面設計、內容布局或互動流程最佳化,從而提升產品體驗與使用者轉化。 Session Replay (會話回放)和熱力圖功能提供了一種可視化、彙總式的使用者行為資料分析能力,從而協助我們基於真實的使用者行為資料快速發現互動障礙,最佳化頁面配置和互動體驗。

SessionReplay(會話回放)

SessionReplay 支援錄製使用者在頁面上的所有操作,包括:

  • DOM 變化

  • 使用者互動動作(點擊、輸入、滾動等)

  • 網路請求

  • 頁面效能指標

錄製完成後,您可以在監控平台回放完整的使用者會話,協助您:

  • 快速定位問題:通過回放使用者操作,快速複現錯誤情境

  • 最佳化使用者體驗:觀察使用者真實操作路徑,發現互動問題

  • 提升轉化率:分析使用者行為,最佳化關鍵流程

熱力圖

熱力圖功能通過採集使用者的點擊行為資料,產生可視化的熱力圖,協助您:

  • 瞭解使用者關注點:查看使用者最常點擊的地區

  • 發現無效點擊:識別使用者點擊但無響應的地區

  • 最佳化頁面配置:根據點擊熱力圖調整頁面元素位置

  • 提升使用者體驗:減少誤觸,提高操作效率

快速入門

前置條件

已完成 RUM SDK 接入,確保 SDK 版本(≥ 0.1.5),接入參考 接入Web & H5應用

啟用 SessionReplay

最簡單的啟用方式:

armsRum.init({
  endpoint: "your endpoint",
  replay: true, // 啟用會話回放
});

啟用熱力圖

啟用熱力圖的使用依賴SessionReplay(基於SessionReplay作為熱力圖的背景頁面),需要開啟replay(對採樣率沒有要求),另外需要配置 action 採集器的 trackUserInteractions 選項:

armsRum.init({
  endpoint: "your endpoint",
  replay: true, // 啟用會話回放
  collectors: {
    action: {
      enable: true,
      trackUserInteractions: true, // 啟用熱力圖資料擷取
    }
  }
});

完整配置樣本

同時啟用 SessionReplay 和熱力圖:

armsRum.init({
  endpoint: "https://your-endpoint.com/rum/web/v2",
  // SessionReplay 配置
  replay: {
    enable: true,
    sampling: 20, // 會話回放採樣率,此處代表 20% 的會話會被錄製
    privacy: {
      level: 'user-input', // 僅遮蔽使用者輸入
    }
  },
  
  // 熱力圖配置
  collectors: {
    action: {
      enable: true,
      trackUserInteractions: true, // 啟用熱力圖分析
      sampling: 100, // 100% 採樣率
    }
  },
  
  // Session 配置
  sessionConfig: {
    sampleRate: 1, // 會話採樣配置,預設 100% 採樣率
    storage: 'localStorage',
  }
});

SessionReplay 配置

配置項說明

通過 replay 配置項進行配置,支援簡單啟用或詳細配置。

參數

類型

描述

是否必填

預設值

enable

boolean

是否啟用會話回放功能

false

sampling

number

採樣率,取值範圍:0-100,表示百分比(例如:20 表示 20% 的會話會被錄製)

1,即預設 1% 的採樣率

url

string

Replay 資料存放位置,指定錄製資料的儲存 API

基於 endpoint 自動產生

privacy

object

隱私保護配置

{ level: 'mask' }

privacy 配置

在啟用 Session Replay 前,建議您進行正式的隱私影響評估,規劃隱私保護配置以控制錄製內容的敏感資訊遮蔽,RUM 提供了不同層級的隱私保護層級配置。

參數

類型

描述

是否必填

預設值

level

string

隱私保護層級。可選值:

- 'allow':允許錄製所有內容,不做任何遮蔽

- 'mask':遮蔽所有常值內容和輸入框

- 'user-input':僅遮蔽使用者輸入的內容(如密碼、輸入框等)

- 'allowlisted':僅錄製白名單中的元素,其他內容將被遮蔽

'mask'

allowlisted | Array | 白名單配置。當 level'allowlisted' 時生效,指定允許錄製的元素選取器或元素列表

可以通過添加特定 CSS 類來控制錄製行為:

  • rum-block:避免該元素及其子項目被錄製,回放時是一個同等寬高的佔位元素

  • rum-ignore:避免錄製該元素的輸入事件

  • rum-mask:該元素及其子項目的 text 內容將會被屏蔽

<!-- 不錄製該地區 -->
<div class="rum-block">
  這部分內容不會被錄製
</div>

<!-- 避免錄製該元素的輸入事件 -->
<input class="rum-ignore" />

<!-- 遮蔽敏感資訊 -->
<div class="rum-mask">
  敏感資訊會被遮蔽顯示
</div>

配置樣本

樣本 1:簡單啟用(預設配置)

armsRum.init({
  endpoint: "your endpoint",
  replay: true
});

樣本 2:設定採樣率

armsRum.init({
  endpoint: "your endpoint",
  replay: {
    enable: true,
    sampling: 20, // 20% 的會話會被錄製,降低儲存成本
  }
});

樣本 3:隱私保護 - 遮蔽所有文本

armsRum.init({
  endpoint: "your endpoint",
  replay: {
    enable: true,
    privacy: {
      level: 'mask'  // 遮蔽所有常值內容和輸入框
    }
  }
});

樣本 4:隱私保護 - 僅遮蔽使用者輸入

armsRum.init({
  endpoint: "your endpoint",
  replay: {
    enable: true,
    privacy: {
      level: 'user-input'  // 僅遮蔽使用者輸入的內容(密碼、輸入框等)
    }
  }
});

樣本 5:隱私保護 - 白名單模式

armsRum.init({
  endpoint: "your endpoint",
  replay: {
    enable: true,
    privacy: {
      level: 'allowlisted',
      allowlisted: ['.main-content', '#app', '.product-card']  // 僅錄製這些元素
    }
  }
});

工作原理

  1. 錄製時機:SessionReplay 在以下時機開始錄製:

    • Session 初始化時

    • 頁面載入完成後(DOMContentLoaded

  2. 資料上傳:錄製資料會在以下時機上傳:

    • 頁面隱藏時(visibilitychange

    • 頁面凍結時(freeze

    • 頁面卸載前(beforeunload

    • 路由變化時(pv

  3. 錄製限制

    • 單個會話錄製的最長時間為 1 小時(3600 秒)

    • 超過最大時間長度後會自動停止錄製

  4. 採樣控制

    • 採樣率在 Session 層級控制,採樣的命中前提是Session命中採樣

    • 可通過 replay.sampling 配置

    • 採樣決策在 Session 初始化時確定,整個會話期間保持不變

熱力圖配置

配置項說明

熱力圖功能通過 collectors.action 採集器配置,需要啟用 trackUserInteractions 選項。

參數

類型

描述

是否必填

預設值

enable

boolean

是否啟用點擊事件採集

true

trackUserInteractions

boolean

是否追蹤使用者互動(用於熱力圖分析)。當為 true 時,會採集點擊位置、目標元素資訊等詳細資料

false

sampling

number

採樣率,取值範圍:0-100,表示百分比

100

配置說明

  • trackUserInteractions: false(預設):

    • 只採集可互動元素(button、a、input、select、option、textarea 等)的點擊事件

    • 採集的資料包括:元素名稱、XPath、期間等基礎資訊

    • 適用於只需要基礎點擊統計的情境

  • trackUserInteractions: true

    • 採集所有元素的點擊事件,包括不可互動元素

    • 採集的資料包括:

      • 位置資訊:點擊的 X/Y 座標(相對於文檔)、元素內相對座標

      • 目標元素資訊:元素選取器、寬度、高度、是否為可互動元素、是否可信的互動

      • 視口資訊:頁面視口的寬度和高度

    • 適用於需要產生熱力圖的情境

配置樣本

樣本 1:啟用熱力圖(推薦配置)

armsRum.init({
  endpoint: "your endpoint",
  collectors: {
    action: {
      enable: true,
      trackUserInteractions: true,  // 啟用熱力圖分析
      sampling: 100,  // 100% 採樣率
    }
  }
});

樣本 2:僅採集基礎點擊事件(不啟用熱力圖)

armsRum.init({
  endpoint: "your endpoint",
  collectors: {
    action: {
      enable: true,
      trackUserInteractions: false,  // 不啟用熱力圖
      sampling: 100,
    }
  }
});

採集的資料欄位

trackUserInteractions: true 時,採集的點擊事件包含以下欄位:

position(位置資訊)

{
  x: 123,        // 點擊 X 座標(相對於文檔)
  y: 456,        // 點擊 Y 座標(相對於文檔)
  ex: 50,        // 元素內相對 X 座標
  ey: 30         // 元素內相對 Y 座標
}

target(目標元素資訊)

{
  selector: "#root > div > button:nth-child(15)",  // 元素選取器
  width: 120,      // 元素寬度(像素)
  height: 40,     // 元素高度(像素)
  reaction: 1,     // 是否為可互動元素(0=不可互動, 1=可互動)
  trust: 1         // 是否可信的互動(0=不可信, 1=可信)
}

viewport(視口資訊)

{
  width: 1920,    // 視口寬度(像素)
  height: 1080    // 視口高度(像素)
}

工作原理

  1. 事件監聽:SDK 監聽頁面的 click 事件(使用捕獲階段)

  2. 元素識別

    • trackUserInteractions: false 時,只採集可互動元素的點擊

    • trackUserInteractions: true 時,採集所有元素的點擊

  3. 資料擷取

    • 計算點擊位置(相對於文檔和元素)

    • 擷取元素資訊(選取器、尺寸、互動性)

    • 判斷互動可信度(基於元素大小、可見度等)

  4. 資料上報:採集的資料會隨其他 RUM 事件一起上報到監控平台

使用情境

SessionReplay 常見使用情境

1. 錯誤複現和調試

情境:使用者報告了一個錯誤,但無法準確描述操作步驟。

解決方案

  • 啟用 SessionReplay,設定合理的採樣率(如 20%)

  • 當錯誤發生時,通過 Session ID 關聯找到對應的會話回放

  • 回放使用者操作,快速定位問題原因

2. 使用者體驗最佳化

情境:分析使用者在關鍵流程中的操作路徑,最佳化轉化率。

解決方案

  • 針對關鍵頁面(如購買流程)提高採樣率

  • 回放使用者會話,觀察使用者操作習慣

  • 發現操作障礙點,最佳化頁面配置和互動

3. 支援客服情境

情境:客服需要瞭解使用者遇到的具體問題。

解決方案

  • 通過使用者識別碼 或 Session ID 尋找對應的會話回放

  • 回放使用者操作,快速理解問題上下文

  • 提供更精準的解決方案

熱力圖使用情境

1. 頁面配置最佳化

情境:瞭解使用者最常點擊的地區,最佳化頁面配置。

解決方案

  • 啟用熱力圖資料擷取

  • 在監控平台查看點擊熱力圖

  • 根據熱力圖調整重要元素的位置

2. 無效點擊分析

情境:發現使用者點擊但無響應的地區(無效點擊)。

解決方案

  • 通過 target.reaction 欄位識別不可互動元素的點擊

  • 分析無效點擊的分布和頻率

  • 最佳化頁面,減少無效點擊

3. 移動端適配最佳化

情境:移動端使用者誤觸率高,需要最佳化點擊地區。

解決方案

  • 通過熱力圖查看移動端的點擊分布

  • 識別誤觸作用區

  • 調整元素大小和位置,減少誤觸

最佳實務

SessionReplay 最佳實務

1. 採樣率設定

  • 生產環境:建議設定 10-20% 的採樣率,平衡成本和覆蓋率

  • 測試環境:可以設定 100% 採樣率,便於問題排查

  • 關鍵頁面:對轉化率關鍵頁面提高採樣率

const isProduction = process.env.NODE_ENV === 'production';
armsRum.init({
  endpoint: "your endpoint",
  replay: {
    enable: true,
    sampling: isProduction ? 20 : 100,  // 生產環境 20%,測試環境 100%
  }
});

2. 隱私保護

  • 敏感資訊:對於包含敏感資訊的頁面,使用 'mask''user-input' 層級

  • 公開頁面:對於公開頁面,可以使用 'allow' 層級,獲得更完整的回放

  • 合規要求:根據合規要求,合理設定隱私權等級

3. 儲存成本最佳化

  • 合理設定採樣率,按需配置採樣率

  • 對於非關鍵頁面,可以降低採樣率或禁用錄製

  • 定期清理到期的錄製資料(預設30天)

4. 效能考慮

  • SessionReplay 會對頁面效能產生一定影響,建議在關鍵頁面使用

  • 監控錄製資料的體積,避免影響上報效能

熱力圖最佳實務

1. 採樣率設定

  • 分析階段:建議使用 100% 採樣率,獲得完整資料

  • 穩定運行:可以降低到 50-80%,減少資料量

  • 高流量頁面:可以適當降低採樣率

armsRum.init({
  endpoint: "your endpoint",
  collectors: {
    action: {
      enable: true,
      trackUserInteractions: true,
      sampling: 80,  // 80% 採樣率
    }
  }
});

2. 結合業務分析

  • 結合頁面路徑、使用者屬性等維度分析熱力圖

  • 關注關鍵轉化路徑的點擊熱力圖

  • 定期分析熱力圖變化,最佳化頁面配置

3. 移動端最佳化

  • 移動端誤觸率高,重點關注無效點擊

  • 通過 target.trust 欄位識別可信點擊

  • 最佳化移動端元素的點擊地區大小

常見問題

SessionReplay 常見問題

開啟 SessionReplay 對頁面效能有影響嗎?

SessionReplay 會對頁面效能產生一定影響,主要體現在:

  • 記憶體佔用:錄製資料會佔用一定記憶體

  • CPU 使用:DOM 變化監聽會消耗 CPU 資源

  • 網路傳輸:錄製資料需要上傳,可能影響網路效能

建議

  • 合理設定採樣率,避免全量錄製

  • 在非關鍵頁面可以禁用錄製

  • 監控頁面效能指標,確保影響在可接受範圍內

如何控制錄製資料的體積?

可以通過以下方式控制錄製資料體積:

  1. 降低採樣率:減少錄製的會話數量

  2. 設定隱私權等級:使用 'mask''user-input' 層級,減少錄製內容

  3. 限制錄製時間長度:單個會話最多錄製 1 小時

  4. 過濾不需要的元素:使用 allowlisted 模式,只錄製關鍵地區

Q3: 是否支援Canvas 和 IFrame的錄製?

A: 基於合規和錄製效能方面的考量,暫不支援Canvas和IFrame的錄製,會留白處理。

Q4: 採樣率是如何工作的?

A: 採樣率在 Session 初始化時確定,整個會話期間保持不變。例如:

  • 如果Session的採樣率配置為20%,Replay配置為20%,SessionReplay的整體採樣率是 20% × 20% = 4%

  • 如果採樣率設定為 20%,則 20% 的 Session 會被錄製

  • 採樣決策基於 Session ID 的雜湊值,確保同一 Session 的決策一致

  • 一旦 Session 被選中錄製,整個會話期間都會持續錄製

熱力圖常見問題

Q1: 熱力圖資料什麼時候上報?

A: 熱力圖資料會隨其他 RUM 事件一起上報,上報時機包括:

  • 達到 reportConfig.maxEventCount 時批量上報

  • 達到 reportConfig.flushTime 時間間隔時上報

  • 頁面卸載前上報

Q2: 熱力圖資料包含哪些資訊?

A: 當 trackUserInteractions: true 時,熱力圖資料包含:

  • 位置資訊:點擊的 X/Y 座標(文檔座標和元素內座標)

  • 元素資訊:選取器、尺寸、是否為可互動元素

  • 互動資訊:是否可信的互動

  • 視口資訊:頁面視口的寬度和高度

Q3: 如何判斷點擊是否有效?

A: 可以通過以下欄位判斷:

  • target.reaction1 表示可互動元素,0 表示不可互動元素

  • target.trust1 表示可信的互動,0 表示可能誤觸

無效點擊通常表現為:reaction: 0trust: 0