2009-05-10 3 views
10

ページが何回表示されたかを正確に把握するには、どのような方法が良いでしょうか?Djangoの正確なページビュー数

私はDjangoを使用しています。具体的には、ページをリフレッシュしてカウント数を上げることは望ましくありません。

答えて

1

私が知っている限り、現時点では、ブラウザには、要求がリフレッシュされたかどうかを示すメッセージ/ヘッダーがサーバーに送信されません。

ページを更新するユーザーをカウントしないようにするには、ユーザーがページを表示したIPと時刻をトラッキングし、30分前にユーザーが最後にページを表示した場合、リフレッシュとしてそれを却下し、ではなく、ページビューカウントをインクリメントします。

IMOほとんどのページには、(さわやかなため、私が持っている唯一の理由は、ブラウザがクラッシュした後、リロード/追加されている可能性があり、新たなデータ、または時折偶発リフレッシュを見ることがあるようが、とにかくページビューとしてカウントされなければならないリフレッシュします上記の方法は却下する)。

+1

IPを追跡することは悪い考えです。多くのネットワークは、その 'ユーザーのために同じ外部IPを与えます。 – Roman

+1

ええ、一意のユーザーを追跡するための他の方法(クッキー、IP +ユーザーエージェント)は良いでしょうが、考えているページビューを却下するのは、ユーザーが信頼できると考えるようにページを更新することです。 – henrym

0

一意の番号を含む1日の終わりに有効期限が切れる各ユーザーにCookieを与えることができます。彼がページをリロードすると、その日にすでにカウントされていることを確認することができます。

0

ページのユニークビジターでテーブルを作成することができます。 VisitorIP + X-Forwarded-コンテンツの場合、User-Agent文字列といくつかの種類のPageIDがあります。データ自体が無関係な場合は、これらの値から(もちろんPageIDの他に)md5/sha1ハッシュを作成することができます。しかし、このテーブルが本当に速く成長することに注意してください。

私はその目的のためにクッキーを設定することをお勧めします。彼らはサイズが限られており、ユーザーが訪問したページが多いため、その限界に達してソリューションを信頼できないものにする可能性があります。また、対話型のコンテンツになるため、クライアント側でこのようなページをキャッシュするのが難しくなります(Cacheability参照)。

0

djangoミドルウェアを作成し、request.urlをキャッチして、url/accessesカラムを持つテーブルを設定することができます。同時更新のトランザクションに注意してください。 ロードの問題がある場合は、memcached with incrを使用するか、関数を追加して定期的にデータベーステーブルを更新して、トランザクションロックを回避できます。

関連する問題