2017-02-09 3 views
-1

私のウェブサイトにはこの機能があります。各ユーザーは写真をアップロードして他の人と共有することができます。今度は、画像閲覧時間を示す画像の横に何かを追加したいと思います(ここでは、各質問が何回見られたかを見ることができます)。 私はこれをやっています: 画像がレンダリングされるたびに、データベース内の表示時間をインクリメントします。しかし、問題は、ここでは、ユーザーが来て、ページを何度もリフレッシュすることができないことです。私は訪問者からのデータを自分のデータベースに保存しておき、以前に閲覧したかどうかを確認する必要があります。どのデータを保存する必要がありますか? IP?クッキー?何?投稿がノードjを使用して何回見たことがあるかを知るには?

注:保存したいデータは一意である必要があります。たとえば、ユーザーが自分のPCで投稿を表示すると、彼のiPhoneで見た場合のデータとデータが異なるはずです。言い換えれば、各デバイスは固有のデータを送信する必要があります。

あなたが私を助けることができれば本当に感謝しています。

答えて

0

私はページのリフレッシュのみを処理したいと思いますか?ユーザーは10分ごとまたは1時間ごとまたは毎日画像を表示する可能性があるためです。そして、あなたはそれをそれぞれのイメージのビューとして数えます。今や、ipやcookieなどの独自の識別メカニズムを使用すると、イメージに1回だけカウントを追加することも、このケースを処理する別のメカニズムを使用することもできます。

ページを更新する際にクライアント側からサーバーへの呼び出しを制限することをお勧めします。クライアント側で正確に何を使用しているかについての情報はありませんが、この場合はwindow.onbeforeunload$(window).unload(function() {});を使用してページ更新イベントを捕捉し、api呼び出しを制限することができます。

+0

申し訳ありませんが、私はあなたが意味するものを正確に得られませんでした。あなたはwindow.onbeforeunloadを使用していると言っていますが、ユーザーはCtrl + Rを20回押して、表示された時間を20に増やすことができます。私はjavascript、node、expressを使用します。 – Joseph

+0

私は私の閲覧した機能を、stackoverflowの表示機能と同じにする(例えば、この投稿が9回見られたことが分かります)。 – Joseph

+0

stackoverflowでページの更新時にビューが増加します。 –

関連する問題