2011-01-26 29 views
4

我有靜態的緩存頁面,我想跟蹤點擊量,然後按照流行度排序。jQuery Redis點擊計數器來跟蹤緩存的Rails頁面的視圖

在Redis中跟蹤這些視圖並將它們加載回主數據庫的最佳方式是什麼?

現在我想使用jquery這樣

$.get("/track/", { id: "1234" }); 

,並使用Redis的寶石在「跟蹤」控制器調用

每天一次,那麼我會運行一個cron的到類似的東西

Pages.each do |p| 
    p.hits = redis.get(p.id.to_s) 
end 
+1

快速評論:你的$不用彷徨確實應該是$。員額的行動,因爲它使服務器上的改變,而不是得到的東西。 –

+1

GET可能會更好地減少開銷,因爲POST使用XMLHttpRequest生成2個請求。 – supo

+0

@supo爲什麼會發布2個請求?這不應該發生...... – Kevin

回答

2

這是我最後的rake任務,以防萬一它有助於任何

require 'redis' 
task :cron => :environment do 
    uri = URI.parse(REDIS_URL) 
    REDIS = Redis.new(:host => uri.host, :port => uri.port, :password => uri.password) 

    Pages.all.each do |p| 
     views = REDIS.get(p.id.to_s) 
     if views 
      p.hits = p.hits + views.to_i 

      if p.save 
      REDIS.set pId, "0" 
      end 
     end 
    end 
end 
0

你在做什麼是一個很好的方法來做到這一點,但你也可以使用服務器日誌ge t該頁面上的點擊次數。使用服務器日誌可以讓您不必爲每個頁面添加代碼,並且可以跟蹤唯一的點擊數,而不僅僅是點擊數。如果你熱衷於使用Redis來做,那麼你的方式很好。

+0

謝謝,在試圖解析日誌(在heroku上很難)並嘗試一個機架解決方案(而不是緩存工作)後,我想我堅持使用Redis – fchasen