x無法存取,你可能沒有權限或未登入。
Fd779852eb8e519999f8b35c47777608

如何簡單有效率地計算瀏覽次數?

2012-04-27 16:58:48 +0800chiayiRuby on Rails 節點 中發起
最後由 chuyihuang2012-06-11 14:02:41 +0800回應 , 571次閱讀

計算每個頁面的瀏覽次數,除了可在每個show action裡計算外
瀏覽次數是為了要顯示在頁面上,不是為了要統計

請問有沒有更聰明有效率的方式呢?
謝謝

截至 2012-06-11 14:02:41 +0800,共收到 8 條回應
2a01ae9942939ee2b3954a6727d2bb92
tonytonyjan 1樓, 於2012-04-28 22:10:50 +0800回應

如果你要紀錄每個 resource:

首先你的 resource 要有個 column 以統計瀏覽次數,然後寫一個 method 用以增加瀏覽次數,並掛到 before_filter(最好用到 session 看是不是同一個人在不斷重新整理,否則容易被灌水)。
---
如果你要紀錄每個頁面:

新增一個 table 裡面有兩個 column,一個存 path,一個存瀏覽次數,然後寫一個 method 用以增加該頁面的瀏覽次數,並在 application controller 中掛上 before_filter

D41d8cd98f00b204e9800998ecf8427e
匿名 2樓, 於2012-04-29 14:11:07 +0800回應
2a01ae9942939ee2b3954a6727d2bb92
tonytonyjan 3樓, 於2012-04-29 22:04:41 +0800回應

如果選擇不自己寫,你不如用 Google Analysis 更省事。

1b3deb5d9cf163a796b71aae1f34fbbb
ruohanc 4樓, 於2012-04-30 22:16:54 +0800回應

你要的应该是这个 [#249 Notifications in Rails 3][1]

[1]: http://railscasts.com/episodes/249-notifications-in-rails-3?view=asciicast

PS: 为啥 ruby-taiwan 不支持 markdown 的超链接..

Fd779852eb8e519999f8b35c47777608
chiayi 5樓, 於2012-05-08 14:53:40 +0800回應

謝謝各位的意見,我會試試railstat,Notification看起來挺有趣的,不過,我想流量統計應該有一些眉角是我所不知的,交由給現成的gem來做比較簡單點。

775fbc6d906a09d4c9b87f56b25c914d
twtw 6樓, 於2012-05-12 15:17:36 +0800回應

即然你都用了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

Fd779852eb8e519999f8b35c47777608
chiayi 7樓, 於2012-06-09 09:52:30 +0800回應

就上述的幾個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

6264b569c0e7c4647cfb0a5d6631b390
chuyihuang 8樓, 於2012-06-11 14:02:41 +0800回應

哈哈找到了,我要的就是這個

需要 登入 後方可回應,如果你還沒有帳號按這裡 註冊