使用 Bootstrap Table 的服務端分頁模式時,每次翻頁都會向後端發起請求。若用戶頻繁切換頁碼,會造成不必要的服務器壓力與帶寬浪費。開發者希望:已加載過的頁面數據在本地緩存,再次訪問時直接讀取緩存,不再請求服務端。
首次加載時一次性請求所有數據存入本地變量或 localStorage,之後分頁完全在前端處理。Bootstrap Table 支持 data 參數直接渲染本地數組,配合 pagination: true 即可實現純前端分頁,零服務端交互。
Map<pageNumber, data> 緩存對象。sessionStorage 持久化緩存,頁面刷新不丟失。var pageCache = {};
$('#table').bootstrapTable({
url: '/api/data',
pagination: true,
sidePagination: 'server',
onLoadSuccess: function(data) {
pageCache[this.options.pageNumber] = data.rows;
},
// 重寫查詢參數攔截請求
queryParams: function(params) {
if (pageCache[params.pageNumber]) {
// 手動渲染緩存數據並返回 false 取消請求
$('#table').bootstrapTable('load', pageCache[params.pageNumber]);
return false;
}
return params;
}
});
利用 Service Worker 或 Application Cache(已棄用)實現靜態資源與數據離線訪問,但配置較複雜,通常不作為首選。