在 GitHub 上檢視

Table Pipeline

Bootstrap Table 的數據管道擴展,為服務端請求提供客戶端數據緩存,優化分頁性能。

本頁目錄

該擴展為服務端分頁請求提供客戶端數據緩存功能,從而避免每次翻頁都發起新的服務端請求。它在處理海量數據時提供了一種性能折中方案,介於以下兩種極端情況之間:

  • 客戶端分頁:一次性返回全部數據到客戶端
  • 服務端分頁:每次翻頁都重新從服務端獲取數據

新增兩個核心選項:

  • usePipeline:啟用數據管道緩存功能
  • pipelineSize:設置每個緩存窗口的大小

緩存窗口說明

緩存窗口大小必須能被當前每頁條數整除;插件會自動向上調整為最接近且可整除的值。例如:

  • 若管道大小設置為 4990,每頁顯示 25 條,則會動態調整為 5000

緩存窗口會根據 pipelineSize 與服務端返回的總行數自動計算。例如緩存大小為 500,總行數為 1300,則會生成以下緩存窗口:

[
  {
    "lower": 0,
    "upper": 499
  },
  {
    "lower": 500,
    "upper": 999
  },
  {
    "lower": 1000,
    "upper": 1499
  }
]

服務端要求

服務端接口必須支持根據 limit(即 pipelineSize)與 offset 參數返回指定范圍的數據,並同時返回總行數。因此服務端需要使用 offset 和 limit 來組裝響應數據。

緩存使用機制

翻頁時會檢查新的 offset 是否仍處於當前緩存窗口:

  • 若在窗口內,則直接返回本地緩存數據
  • 否則會向服務端請求新的緩存窗口數據

緩存失效條件

以下情況會使當前緩存失效並發起新的服務端請求:

  • 排序操作
  • 搜索操作
  • 每頁條數變更
  • 翻頁進入新的緩存窗口

新增事件

  • cached-data-hit.bs.table:當翻頁命中本地緩存數據時觸發
  • cached-data-reset.bs.table:當緩存失效並需要發起新的服務端請求時觸發

用法

<script src="extensions/pipeline/bootstrap-table-pipeline.js"></script>

示例

Pipeline

選項

pipelineSize

  • 屬性: data-pipeline-size

  • 類型: Number

  • 詳情:

    每個緩存窗口的大小,必須大於 0。

  • 默認值: 1000

usePipeline

  • 屬性: data-use-pipeline

  • 類型: Boolean

  • 詳情:

    設為 true 啟用管道緩存。

  • 默認值: false

事件

onCachedDataHit (cached-data-hit.bs.table)

  • 參數: undefined

  • 詳情:

    當翻頁命中本地緩存數據時觸發。

onCachedDataReset (cached-data-reset.bs.table)

  • 參數: undefined

  • 詳情:

    當需要重置本地緩存(如排序、搜索、頁大小變化或翻頁超出當前緩存窗口)時觸發。