SO、Facebook、Twitterなどのユーザー「通知」を使用したアプリケーションがあります。ただし、すべてのページ ビューで通知が変更されるとは限らないため、通知を memcached に保存することにしました。
def get_notification
if current_user
mc = Dalli::Client.new('localhost:11211')
require_dependency 'notification.rb'
@new_notification = mc.get(current_user.id.to_s+'new_notification')
if @new_notification == nil
@new_notification = Notification.getNew(current_user.id)
mc.set(current_user.id.to_s+'notification',@new_notification)
end
end
end
この実装の明らかな欠陥を見落としていました。通知が読み込まれると、ユーザーがログアウトするか、キャッシュ エントリの有効期限が切れるまで更新されません。これを行う 1 つの方法は、新しい通知のイベントが発生したときにユーザーのキャッシュ エントリを無効にすることです。これにより、データベースへの新しいリクエストが強制されます。これを実装する他の方法はありますか?