画面上部の通知バーを介してアカウントへの特定の変更をユーザーに通知する Web サイトを構築しています (SO が新しいバッジを通知する方法と同様)。
私のDBには、イベントを一覧表示するテーブルと、変更がまだ通知されているかどうかを示すフラグがあります。テーブルの形式は次のとおりです。
UserID AccountEvent EventDescription HasBeenNotified
ABC123 1 Your price deal ends in 2 weeks FALSE
私が達成したいことは次のとおりです。
- 顧客がログインすると、通知が表示されます (発生する必要があると仮定します)。
- 顧客がクリックしてメッセージを確認
- DB
HasBeenNotified
フィールドに設定TRUE
(通知が発生したことを確認するため)
私はこれをすべて達成することができましたが、問題があります。
通知する必要があるイベントをHttpRuntime.Cache
10 分の有効期限で入れているので、DB をポーリングし続ける必要はありません。
これにより発生する問題は、キャッシュの有効期限が切れるまで、顧客が同じメッセージの複数の通知を表示する可能性があることです。次に例を示します。
- 顧客がログインし、アプリ ロジックがキャッシュを調べて、顧客
ABC123
に X を通知する必要があると言う - その後、顧客はメッセージを確認します (DB を更新して通知フラグを TRUE に設定します)。
- キャッシュは更新された DB をまだ反映していないため、顧客が新しいページに移動すると、同じ通知メッセージが発生します (キャッシュが期限切れになるまで)
私の知る限り、キャッシュ内の実際のデータを更新することはできません (Remove
キャッシュ キーに基づいてキャッシュからのデータのみを更新できます)。
複数の通知の問題を回避する方法のヒントやヒントを提供できる人はいますか?