2009-08-05 74 views
4

我有一個我想要顯示總計的集合,並且想法是爲我需要的每個總計使用緩存。不過,我也需要深入研究數據集。所以最有可能的是我將不得不加載收藏。那麼我還應該使用緩存還是隻使用計算?Rails計數器緩存與計算

回答

3

答案取決於集合的大小。如果集合非常大(1000或物品),那麼緩存可能是一個好主意。如果它只有少數幾個,並且你在表上有索引以快速找到相關的行,那麼緩存可能不是必需的,特別是如果你必須鑽取集合。

正如所有這些類型的問題一樣,正確的答案通常是「取決於」。這很大程度上取決於您的要求和數據等。

+0

那麼每個集合很可能是在1000更有可能的是50 -200行。我想我會先嚐試最簡單的方法! – Cameron 2009-08-05 13:38:10

3

正如Stephen ODonnell所說,「...取決於收集的大小。」但是,您還需要考慮每頁將執行此計算的次數。例如,如果您正在創建博客應用程序,並且帖子/索引頁面顯示10條博客帖子,每篇博文的底部都有「155條評論」,那麼通過使用計數器緩存可以避免很多數據庫調用。

我建議只用活動記錄搜索來嘗試它,但添加「包含」選項。假定Post#123有50條評論。

p = Post.find_by_id(123) 
p.comments.each do {|c| puts c } #Do something meaningful instead... 

將生成51個數據庫調用,其中1個用於Post,每個評論用1個。相反,你可以這樣做:

Post.find_by_id(123, :include => [:comments]) 

現在,它會自動查詢的意見,當你搜索後,倒塌51個查詢到1