layui分页本身无缓存,所谓“清空分页缓存”实为清理table模块内部缓存(如table.cache、选中状态)或业务变量;需调用table.clearcache('id')配合table.reload()重置分页器,并手动清空搜索框及复选框ui。

layui分页本身没有缓存,清空的是表格或数据源的缓存
laypage.render() 是纯前端分页 UI 组件,它不存储、不管理任何数据,也不缓存请求结果或分页状态。所谓“清空分页缓存”,实际是误用了概念——真正需要清理的,是 table 模块的内部缓存(比如 table.cache、table.config 中的选中状态、分页参数、原始数据快照),或者你业务层自己维护的分页相关变量(如 currentPage、searchParams)。
table.clearCache() 是清空跨页勾选和缓存数据的关键
如果你在用 table.render() 配合分页(page: true 或本地分页),调用 table.clearCache('yourTableId') 才是真正清除「分页上下文残留」的操作:
- 它会清空
table.cache['yourTableId']中所有行数据及checked、allChecked等标记,避免翻页后勾选状态错乱 - 它不会重置分页器 UI(如当前页码显示),也不会清空搜索框值或工具栏状态
- 必须传入你在
table.render()中定义的id字符串,例如id: 'userTable'→ 调用table.clearCache('userTable') - 若没设
id,clearCache无法定位目标,直接失效
清空后分页器还显示旧页码?得 reload 表格并重置 page 配置
table.clearCache() 只动缓存,不动视图。要让分页器回到第 1 页、总条数归零、tbody 真空,必须配合 table.reload():
- 显式传
page: { curr: 1, limit: 10 },否则可能卡在第 5 页但无数据显示 - 传
where: {}重置搜索条件,防止 reload 时沿用上次筛选参数 - 如果是本地分页(
data数组),必须同时传data: [];如果是服务端分页,确保url正确且后端返回count: 0 - 若用了
laypage.render()单独控制分页器,记得同步调用laypage.render({ elem: 'xxx', count: 0 })更新总页数
最容易被忽略的三件事
清空操作看似简单,但漏掉任意一项都会导致“看着清了,其实没清”:
-
table.clearCache()和table.reload()必须配对使用,只做其一等于白做 - 工具栏里的搜索输入框(如
input[lay-key="search"])不会自动清空,得手动执行$('input[lay-key="search"]').val('').trigger('input') - 如果你用
form.render('checkbox')同步复选框 UI,clearCache后必须再调一次,否则 DOM 上的勾选样式残留











