日、週、月間ページビューカウンター
-
25-09-2019 - |
質問
私はホームページのユーザー生成されます。ホームページにしていきたいリストの作品は、こういうことができるように並べ替えて見ます。これは簡単かもしれないけど、私は複数のカウンターも印象的です。いった最も訪問された項目の昨日は、先週の直前のか月または。
私の最初のアイデアの組み合わせにより、合計4カウンターの列のアイテムのDBす。ひとつひとつにつは、日、週、月、全体のをcronジョブは、クリアのカウンターを24時間、週刊カウンター毎に7日間です。
私の問題であり、何が起こる場合もっと知りたいすることになった見た目の直後の週刊カウンターもクリア?
今必要なのは効率的な使い方を創造する連続カウンターを低減のために各ページビューがないのですが、毎回新しいページ。
今すぐおうと思っていソリューションの redisサーバー, が、まったく泳げないんだけど---解決にも至っていない。
私は見ているだけで一般の考えがちなみに私は開発本アプリをRuby on Rails.
解決
私は、タイムスタンプと、任意のユーザーIDまたはこれまでに何を保存することができて、各ページのトラッキングのヒットを示唆している何を、あなたはどのようにあなたのようなカウンターを計算することができますし、後でそれを変更します形式を使用します。エンティティ(ページ)ユーザIDとタイムスタンプを持つテーブルには、良いことがあります。今までにページが要求されたときだけそれに追加します。
あなたがソフトウェアで一緒に一括してできるインサートの数を減らすために。 ここをMySQLのようなマルチ行挿入を構築することは、オーバーヘッド保存されます。あなただけ説明するように、インサートを構築するためにあなたのクラスを必要とし、挿入まで保存されます。ひとつのアイデアだけではなく、時間にそれをですが、サーバーがあなたのヒットの行だけを失うのx番号を行い行く場合は、最大で言うすることができますバッチに行数を固定します。
MySQLのトリガーはあなたが常にメインのヒット追跡テーブルをヒットする必要はありませんので、あなたがテーブルを報告更新するために使用することができたインサートの完全なバッチが行われた後にのみ実行するように引き起こす可能性があることがあります。
これがない場合は、また、それは、独自のシャードに折れるとAjaxを介してアクセスすることができ、スループットは本当に高いものにする必要がヒットの追跡を行うとカウントを取得するために呼び出します。
他のヒント
あなたはどうすることができますが訪問しているもの店舗、何日(タイムスタンプ)であり、あなたは何かが訪問され、毎回のためにこれを行うだろう。あなたがvisitiedたものを取得したいときは、日付(タイムスタンプ)の範囲内のものを選び、それらを一緒に追加することになります。
または
あなたの各リンクは、彼らが訪問している毎日のために、自分のそれぞれの行を持つことになります。彼らはより一日中何度も訪れている場合、それはすでに既存の値に1を追加します。
あなたの週は、今日の前に日曜日、土曜日はなく7日のようなものであれば、あなたは第二の例を使用し、毎日の代わりに、毎週の保存を行うことができます。だから、言葉の週は、このようにデータ・ストレージの少量を持つ言葉の日置き換えます。
私は、あなたが巨大なデータストアを避けたいことがわかりますが、あなたがこの仕事をしたいという程度に私はより良いあなたの週がある場合this.Youは第二の例を使用し、毎日の代わりに、毎週の保存を行うことよりも、表示されません日曜日、土曜日のようなものではなく7日前今日ます。
ここではいくつかのドキュメントを見た後にレジスサーバーの可能性がある。
SET link_id|date => "visit_count"
この店舗link_id
またはものは何でもdate
たり、これまで何文字使用したいで区切ら|
と一緒にそれを呼び出します。そのキー値では、visit_count
を保存します。
あなたがこの日にそのリンクにヒットを追加したいと言います。あなたはGET link_id|date
し、それを返しvisit_count
に+1を追加し、それは私が上に示した道をバックアップ格納します。
あなたは、特定の日付のヒットの量を取得したい場合は、あなたかもしれGET link_id|date
と再びます。
あなただけの適切な値にlink_id
、date
とvisit_count
を置き換えるためにレールルビー・オン・使用することになります。
希望、これはあなたを助けます。
なにができるのかがテーブルを作成するというViewCounters.
あるいは"pageId'欄に、'日'欄に、意見おります。のpageIdうに対応するページを見ているのに、'日'ように対応する日とみなされてきた。
各ページが閲覧できるようにするためのlibsoupおよ(または作成しなければな)行のViewCounters表pageId、現在の日です。でもその後の増分のビューのカラムが行います。
ここで最大限の柔軟性に関して新しいカウンターとアクセスします。さらに、カウントのために、週次、月次、毎日のカウンターは非常に安くを生成する際に使われます。
他の大きな利益になるようにすることでのみ行ページあたりの毎日のようになっている。