giive 兄寫了一篇 Rails 內建的 Pagination 簡介 。不過官方 Rails Blog 推薦 的這篇文章 Guide: Things You Shouldn’t Be Doing In Rails ,強烈的建議不要使用內建的 Pagination。甚至,在 Rails 2.0 還要完全的把 Pagination 移出 core 而獨立成一個 Plugin。究竟這個內建的 Pagination 有什麼問題呢?
1. 雖然使用 paginate 時,產生的 SQL 不會將沒有要顯示的資料選取出來,但是有時候我們需要比單純的 find 來的複雜,會需要用到自訂的query。
正確的做法是做一個新的 class 繼承 Pagination,然後 override count_collection_for_pagination 和 find_collection_for_pagination 兩個method,(當然你要在這兩個 methods 中做出正確的 query)。再用這個新的 class 來產生 pagination。
不過很多懶惰人(就是我啦!),會直接用 find_by_sql 把全部的 182,443,567,9832 筆的 records 選回來,再用 paginate_collection 來做出分頁的效果,自然就無比的浪費。
這點不能算是 Pagination 的錯,畢竟是亂用。可是因為內建的關係,讓很多人都沒有仔細去看看 Pagination 到底做了些什麼事,才會出這樣的問題。
2. 使用 pagination_links 來產生選頁的連結是蠻慢的,根據 這一篇 ,用 pagination_links_each 會比較快。
不過若是分頁出來的頁數太多,會有放不下這麼多頁連結的問題。這時要使用到 :window 這個選項,而這個選項是很慢很慢的。
所以說,即使在沒有 Database overhead 的情況下,內建的 Pagination 在資料量很大的時候還是會有效能的問題。
解決的辦法?
參考這幾篇文章:
分享到:
相关推荐
mybatis-pagination mybatis分页 mybatis拦截器
资源来自pypi官网,解压后可用。 资源全名:fastapi_pagination-0.3.1-py3-none-any.whl
pagination-demo-源码.rar
gbirke jquery pagination v2.1-1-g19ac803.zip gbirke jquery_pagination v2.1-1-g19ac803.zip gbirke jquery_pagination v2.1-1-g19ac803.zip
import Pagination from 'vue-pagination-2'; 脚本标签 在dist/vue-pagination-2.min.js下获取缩小版本。 它将导出全局Pagination变量。 用法 在全局或本地注册组件: Vue . component ( 'pagination' , ...
Django-pagination-bootstrap是一个使用布局轻松在添加分页的应用程序。 注意:该库当前可用于Python 3.6 +,Django 2.0+和Bootstrap 3+。 对于较旧的版本,请使用版本1.3.0。 安装 要安装django-pagination-...
python库。 资源全名:django-endless-pagination-vue-1.2.tar.gz
python库。 资源全名:django-keyset-pagination-plus-0.9.9.tar.gz
vue-ads-pagination vue广告分页是vue js分页组件。 在左侧,您可以找到有关所显示项目的一些信息。 在右侧的vue-ads-pagination中,Vue广告的分页是vue js的分页组件。...NPM npm安装vue-ads-pagination-保存YARN纱
AngularJs-UI, AngularJs Pagination Angularjs分页 -- Want to be the best pagination.
npm install pagination-table —S 注册插件 import TablePagination from "pagination-table"; Vue.use(TablePagination); 基本使用 <base-table ref="table" :config="tableConfig" :columns="table...
jquery-pagination是jquery的一个分页组件,当前对该组件进行了ui美化,这样更加美观和实用。
Django-pagination-master,源码安装,linux平台安装Django
jquery.pagination应用必须要在jquery.js后面哦~亲
Laravel开发-artificer-pagination-plugin 分页插件。为模型提供分页。
npm install pagination-component --save 或者 yarn add pagination-component 演示版 要构建并运行演示: 克隆此存储库: git clone https://github.com/dibenso/pagination-component.git 安装依赖项: npm ...
资源来自pypi官网,解压后可用。 资源全名:django_pagination_bootstrap-2.0.1-py3-none-any.whl
有关复制和粘贴的更多信息,请查看文件夹去做iOS设备测试蠕虫点指示器类液体指示剂接下来,上一步,跳过按钮的实现景观测试点方向,例如垂直和水平安装npm install react-native-animated-pagination-dotsyarn add ...