老妖的博客
          現實的中沒有幾個人能夠真為對方去死,甚至山盟海誓很快就會在金錢面前變的微不足道,這才是生活。沒有永遠的愛,除了你的父母對你,當然也就沒有永遠的恨,更沒有永遠的痛,時間是最好的治療大師,它會很快撫平你心靈上累累的傷痕。很多年以后你想起來時,那些在你生命中洶涌來往的人群至多是個模糊的影子或者毫無意義的名字
          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 老妖 閱讀(2081) 評論(1)  編輯  收藏 所屬分類: 轉載rails

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

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

          常用鏈接

          隨筆分類(48)

          隨筆檔案(104)

          好友鏈接

          我的豆瓣

          積分與排名

          • 積分 - 221096
          • 排名 - 257

          最新評論

          閱讀排行榜

          主站蜘蛛池模板: 小金县| 潞西市| 赞皇县| 乌拉特后旗| 民权县| 大安市| 益阳市| 湘潭市| 定远县| 康马县| 易门县| 佛山市| 扎鲁特旗| 南木林县| 荔浦县| 和静县| 塔河县| 黄龙县| 杭锦旗| 灵宝市| 奉节县| 托克逊县| 宁化县| 墨竹工卡县| 抚顺市| 灵宝市| 南乐县| 额敏县| 黔南| 安泽县| 晋州市| 孟连| 云南省| 衡阳县| 修水县| 陈巴尔虎旗| 涿鹿县| 马龙县| 吉安县| 漾濞| 万盛区|