ページが閲覧された回数を正確にカウントするための良い方法は何ですか?
私はジャンゴを使用しています。具体的には、ページを更新してカウントを増やしたくありません。
ページが閲覧された回数を正確にカウントするための良い方法は何ですか?
私はジャンゴを使用しています。具体的には、ページを更新してカウントを増やしたくありません。
私の知る限り、現時点では、リクエストが更新からのものかどうかを示すメッセージ/ヘッダーをサーバーに送信するブラウザはありません。
ページを更新しているユーザーをカウントしないようにする唯一の方法は、ユーザーがページを表示したIPと時間を追跡することです。その後、ユーザーが最後にページを表示したのが30分未満の場合、たとえば、次のように閉じます。更新し、ページビュー数を増やしません。
IMOのほとんどのページ更新は、とにかくページビューとしてカウントする必要があります。更新する唯一の理由は、追加された可能性のある新しいデータを確認すること、またはブラウザのクラッシュ後に偶発的に更新/再読み込みすることです(上記の方法では却下されます)。 )。
1日の終わりに有効期限が切れる一意の番号を含むCookieを各ユーザーに与えることができます。彼がページをリロードすると、彼女がその日にすでにカウントされているかどうかを確認できます。
ページの一意の訪問者を含むテーブルを作成できます。たとえば、VisitorIP + X-Forwarded-Forコンテンツ、User-Agent文字列とある種のPageID。データ自体が無関係である場合は、これらの値からmd5 / sha1ハッシュを作成できます(もちろんPageID以外)。ただし、このテーブルは非常に速く成長することに注意してください。
そのためにCookieを設定しないことをお勧めします。サイズには制限があり、ユーザーが多くのページにアクセスすると、その制限に達し、ソリューションの信頼性が低下する可能性があります。また、このようなページはインタラクティブコンテンツになるため、クライアント側でキャッシュするのが難しくなります(キャッシュ可能性を参照) 。
django ミドルウェアを作成して request.url をキャッチし、url / accesses 列を含むテーブルをセットアップできます。同時更新のトランザクションに注意してください。負荷の問題がある場合は、memcached を incr または add 関数と共に使用し、データベース テーブルを定期的に更新して、トランザクション ロックを回避できます。