bootstrap-table默认的分页可以点最后一页,如果数据量小的话还没有什么问题,如果数据量大量问题就很大,尤其一些分布式搜索引擎例如ES,存储的数据比较多没有做好优化的话点击最后一页直接让服务器内存爆炸,具体可以搜一下ES深度分页的问题及解决方案,其中最重要的就是在业务层不要给用户点击深度分页的机会,例如百度分页按钮只会显示十个页码,没有最后一页,如果使用的是 bootstrap-table的话需要修改源码了,毕竟官方没有页码修改接口.
首先打开 bootstrap-table核心文件,找到BootstrapTable.prototype.initPagination方法,并将最下面的一段代码注释掉
if (this.totalPages >= 8) {
if (this.options.pageNumber <= (this.totalPages - 4)) {
html.push('<li class="page-last-separator disabled">',
'<a href="#">...</a>',
'</li>');
}
}
/*
if (this.totalPages >= 6) {
if (this.options.pageNumber <= (this.totalPages - 3)) {
html.push('<li class="page-last' + (this.totalPages === this.options.pageNumber ? ' active' : '') + '">',
'<a href="#">', this.totalPages, '</a>',
'</li>');
}
}
*/
html.push(
'<li class="page-next"><a href="#">' + this.options.paginationNextText + '</a></li>',
'</ul>',
'</div>');
}
将那个如果当前总页码大于6显示最后一页的逻辑注释掉,使用时就不会显示最后一页了,下面是我注释掉的效果
这样服务端再限制一下页面跳转就可以防止用户乱跳转导致深度分页资源消耗的问题