如何簡單有效率地計算瀏覽次數?
計算每個頁面的瀏覽次數,除了可在每個show action裡計算外
瀏覽次數是為了要顯示在頁面上,不是為了要統計
請問有沒有更聰明有效率的方式呢?
謝謝
如果你要紀錄每個 resource:
首先你的 resource 要有個 column 以統計瀏覽次數,然後寫一個 method 用以增加瀏覽次數,並掛到 before_filter(最好用到 session 看是不是同一個人在不斷重新整理,否則容易被灌水)。
---
如果你要紀錄每個頁面:
新增一個 table 裡面有兩個 column,一個存 path,一個存瀏覽次數,然後寫一個 method 用以增加該頁面的瀏覽次數,並在 application controller 中掛上 before_filter
這裡有 gem 可能符合需求
http://github.com/lmanolov/railstat
http://github.com/charlotte-ruby/impressionist
僅供參考。
如果選擇不自己寫,你不如用 Google Analysis 更省事。
你要的应该是这个 [#249 Notifications in Rails 3][1]
[1]: http://railscasts.com/episodes/249-notifications-in-rails-3?view=asciicast
PS: 为啥 ruby-taiwan 不支持 markdown 的超链接..
謝謝各位的意見,我會試試railstat,Notification看起來挺有趣的,不過,我想流量統計應該有一些眉角是我所不知的,交由給現成的gem來做比較簡單點。
即然你都用了resque,
更應該利用redis的便捷來處理counter的議題,
減少大幅一般db的讀寫。
參考這篇的21-24頁:
http://www.slideshare.net/karmi/redis-the-ak47-of-postrelational-databases
雖然說不是為統計用,
也可看看rubygems網站
如何用redis來追蹤gem的下載統計:
http://gist.github.com/296921
就上述的幾個solution研究的結果如下:
# http://github.com/lmanolov/railstat
這個gem太老舊,上次更新是3年前,不考慮
# http://github.com/charlotte-ruby/impressionist
這個gem看起來挺符合需求,但缺點是每次訪問時都會對db存取,雖然counter提供cache,但我想要更輕量
# Notifications
如果只有幾個頁面要計算可能還可以用,但太多時不適用,光寫regex就很長,如果只有部份頁面要計算人次,用notification的話會每次都被觸發,再用regex去檢查該頁面是不是要統計,不是很好。
綜合上述,第一最好就是Memory base db這樣才夠快,第二只要對有需要統計的頁面才觸發事件
最佳解是redis,可選擇redis-objects或redis-rb
# http://github.com/nateware/redis-objects
最大的缺點是它的intereface跟redis不一樣,不然它是個很贊的gem,更新也很頻繁
# http://github.com/redis/redis-rb
redis官網推薦使用,它的interface跟redis一致,看redis官網的文件就可以實作,很方便
再次推薦@twtw提供的slide
http://www.slideshare.net/karmi/redis-the-ak47-of-postrelational-databases
哈哈找到了,我要的就是這個