每次我访问经过身份验证的页面时,我都会注意到发布了一个SQL语句:
用户负载(0.2ms)SELECT users.*FROM usersWHERE(users.id= 1)LIMIT 1
(我正在使用Rails 3顺便说一句..所以cache_money似乎是一个解决方案,尽管有很多搜索我找不到替代品).
我在用户模型中尝试了很多覆盖,似乎只调用了find_by_sql.哪个传递了整个SQL语句的字符串.像find_by_id或find这样直观的东西似乎没有被调用.我可以'覆盖这个方法并收集用户ID并从中做一个合理的缓存系统 - 但这非常难看.
我也尝试重写authenticate_user,我可以拦截一次SQL尝试但是然后调用current_user似乎再次尝试.
简单地说,我的用户对象很少变化,并且它是一个悲伤的状态,以便为此而不是内存缓存解决方案.(假设我愿意接受使用以下内容来使所述缓存失效的所有责任:after_save作为部分但不是所有解决方案)