老妖的博客
          現實的中沒有幾個人能夠真為對方去死,甚至山盟海誓很快就會在金錢面前變的微不足道,這才是生活。沒有永遠的愛,除了你的父母對你,當然也就沒有永遠的恨,更沒有永遠的痛,時間是最好的治療大師,它會很快撫平你心靈上累累的傷痕。很多年以后你想起來時,那些在你生命中洶涌來往的人群至多是個模糊的影子或者毫無意義的名字
          posts - 105,  comments - 171,  trackbacks - 0

          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 在資料量很大的時候還是會有效能的問題。
          解決的辦法?

          參考這幾篇文章:
          posted on 2006-11-10 21:19 老妖 閱讀(2083) 評論(1)  編輯  收藏 所屬分類: 轉載rails

          FeedBack:
          # re: Pagination 的問題--轉載
          2012-11-07 15:51 | 山寨吧
          技術類博客 支持一個  回復  更多評論
            

          <2006年11月>
          2930311234
          567891011
          12131415161718
          19202122232425
          262728293012
          3456789

          常用鏈接

          隨筆分類(48)

          隨筆檔案(104)

          好友鏈接

          我的豆瓣

          積分與排名

          • 積分 - 221105
          • 排名 - 257

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 长海县| 西吉县| 长治市| 瑞安市| 崇左市| 棋牌| 安福县| 崇义县| 平南县| 封丘县| 东乌珠穆沁旗| 玉龙| 淳化县| 启东市| 布拖县| 双城市| 宁陕县| 枣阳市| 汉中市| 广昌县| 元江| 分宜县| 天柱县| 慈溪市| 驻马店市| 山阳县| 金昌市| 奈曼旗| 梨树县| 建宁县| 修武县| 武宁县| 青冈县| 池州市| 乌兰浩特市| 庄河市| 思茅市| 郸城县| 民和| 昂仁县| 乐昌市|