2011-01-26 12 views
4

ヒット数を追跡​​して人気順に並べ替える静的キャッシュページがあります。jQuery RedisキャッシュされたRailsページのビューをトラッキングするためにカウンタをヒット

Redisでこれらのビューを追跡し、メインデータベースに戻すにはどうすればよいでしょうか?

今私はこの

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

と私は、その後のcronを実行します1日に1回

を呼び出すために「トラック」のコントローラでRedisの宝石を使用して同じようにjQueryを使用して考えています〜のようなもの

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

クイックコメントを助け念のために、私の最後のrakeタスクである:それは、サーバー上の変更を加えるのではなく、何かを取得していますので、あなたの$に.getは本当にの$ .postアクションでなければなりません。 –

+1

POSTはXMLHttpRequestで2つの要求を生成するため、GETはオーバーヘッドを減らすのに適しています。 – supo

+0

@supoポストは2つのリクエストを生成するのはなぜですか?それは起こるはずがありません... – Kevin

答えて

2

は、それが誰

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はそのページのヒット数です。サーバーログを使用すると、各ページにコードを追加する必要がなくなり、ヒットだけでなくユニークなヒットをトラッキングできます。あなたがレディスでそれをしたいと思っているなら、あなたの道はいいです。ここで

+0

ログ(英雄では難しい)を解析し、ラックソリューション(キャッシュとは連携していません)を試した後、私はRedis – fchasen

関連する問題