しばらくの間、これについて疑問に思っていました。Web フォーラムには、まだ読んでいないものを強調表示するオプションが実装されているのではないかと思います。フォーラムがどのように知っているか。
ほとんどの Web フォーラムには、前回のアクセス以降のすべての投稿を表示する機能があるため、データベースのユーザーデータにあるページに最後にアクセスした時間を保存する必要があります。
しかし、それでは、1 つだけ読んだ後でも個々のトピックがどのように強調表示されるかを説明することはできません。
しばらくの間、これについて疑問に思っていました。Web フォーラムには、まだ読んでいないものを強調表示するオプションが実装されているのではないかと思います。フォーラムがどのように知っているか。
ほとんどの Web フォーラムには、前回のアクセス以降のすべての投稿を表示する機能があるため、データベースのユーザーデータにあるページに最後にアクセスした時間を保存する必要があります。
しかし、それでは、1 つだけ読んだ後でも個々のトピックがどのように強調表示されるかを説明することはできません。
既読/お気に入りなどのフラグを使用して、ユーザーをトピック/投稿に接続する多対多のテーブル。
多くの Web フォーラムには、閲覧した各トピックを最後に閲覧したときの膨大なリストが保存されています。
これはすぐに手に負えなくなりますが、軽減策があります。フォーラム内の未読アイテムの判別を参照してください
私が以前使用していたカスタムフォーラムでは、前回の訪問時間(別のページを表示するたびに更新されます-通常はCookie)と、日付/時刻の値を追加する各トピックの[読み取りマーク]ボタンの組み合わせを使用しましたUserID、TopicID、および日付/時刻を含むSQLテーブル。
したがって、新しいトピックを表示するには、最後の訪問日を確認し、その時点以降に作成されたものはすべて新しいトピックでした。
トピックを入力すると、[既読にする]をクリックしたトピックには最初のトピックのみが表示され、[既読にする]ボタンをクリックした後に日付/時刻が追加された返信が表示されます。視聴者とパフォーマンスに余裕がない場合は、基本的に、ユーザーがクリックしたトピックごとにテーブルにエントリを追加するように設定できます。
もちろん、訪問者が読んだ投稿を追跡することは、それほど大したことではありません。訪問者が読んだ投稿の数は、読まなかった投稿よりもはるかに少ない可能性が高いためです。したがって、訪問者が読んだ投稿がわかれば、この訪問者が読んでいない投稿もわかります。これを計算量の少ないものにするために、通常は特定の期間、たとえば過去 2 週間だけこれを行います。その時間より前のものはすべて既読と見なされます。
あなたが持っているもう1つのオプションは、vBulletinのインストールでこれが以前に行われたことを実際に見たことがありますが、クライアント側で表示されたトピックIDのコンマ区切りリストをCookieに保存することです。
サーバー側では、保存されているのはユーザーが前回アクセスした時刻だけでした。フォーラムシステムは、これをユーザーのCookie内の情報と組み合わせて使用し、いずれかのトピックについて「既読」として表示しました。
私はそれが良い考えだと言っているわけではありませんが、私はそれを代替案として言及したいと思いました-それを行うための明白な方法はすでに他の回答で述べられています、すなわちそれを関係テーブルとしてサーバー側に保存します(多くの人にテーブル)。
その情報を保持するサーバーへの負担が少ないという利点があると思います。
欠点は、それをセッションに結び付けることです。したがって、新しいセッションが開始されると、最後のセッションの前に発生したすべてが「既読」と見なされます。もう1つの欠点は、Cookieが保持できる情報が非常に多く、ユーザーがセッションで数百のトピックを表示する可能性があるため、Cookieのストレージ制限に近づくことです。
もう1つのアプローチ:
ただし、これが機能するためには、トピックの URL が一貫している必要があり、ほとんどのフォーラム システムはこれを行う傾向がありません。これのもう 1 つの欠点は、ユーザーが履歴を消去したり、複数のブラウザーを使用したりする可能性があることです。したがって、これにより、この測定値は「信頼性の低いカテゴリ」に分類されます。おそらく、閲覧したトピックを追跡するために使用している他の手段を補強するために、これを行うだけでしょう。