老妖的博客
          現實的中沒有幾個人能夠真為對方去死,甚至山盟海誓很快就會在金錢面前變的微不足道,這才是生活。沒有永遠的愛,除了你的父母對你,當然也就沒有永遠的恨,更沒有永遠的痛,時間是最好的治療大師,它會很快撫平你心靈上累累的傷痕。很多年以后你想起來時,那些在你生命中洶涌來往的人群至多是個模糊的影子或者毫無意義的名字
          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 的錯,畢竟是亂用??墒且驗閮冉ǖ年P係,讓很多人都沒有仔細去看看 Pagination 到底做了些什麼事,才會出這樣的問題。

          2. 使用 pagination_links 來產生選頁的連結是蠻慢的,根據 這一篇 ,用 pagination_links_each 會比較快。

          不過若是分頁出來的頁數太多,會有放不下這麼多頁連結的問題。這時要使用到 :window 這個選項,而這個選項是很慢很慢的。

          所以說,即使在沒有 Database overhead 的情況下,內建的 Pagination 在資料量很大的時候還是會有效能的問題。
          解決的辦法?

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

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

          <2012年11月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          常用鏈接

          隨筆分類(48)

          隨筆檔案(104)

          好友鏈接

          我的豆瓣

          積分與排名

          • 積分 - 221093
          • 排名 - 257

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 福清市| 娄底市| 巨鹿县| 辽阳市| 腾冲县| 茶陵县| 钟山县| 西平县| 阆中市| 桓仁| 宁安市| 崇左市| 莒南县| 天长市| 肥城市| 临夏县| 正安县| 淮安市| 千阳县| 鄂伦春自治旗| 嘉峪关市| 濉溪县| 筠连县| 怀安县| 莲花县| 营山县| 平陆县| 和龙市| 无为县| 聊城市| 信宜市| 三亚市| 清涧县| 墨玉县| 南木林县| 清水县| 巴中市| 浦县| 彭泽县| 休宁县| 阳泉市|