在 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>
示例
選項
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 -
詳情:
當需要重置本地緩存(如排序、搜索、頁大小變化或翻頁超出當前緩存窗口)時觸發。