我尝试优化一个负载很大的 Rails 应用程序,该应用程序当前在每个请求上都会命中数据库。我现在尝试通过在会话中保存一些信息来优化它,这样我就不需要每次都去数据库了。我目前正在做这样的事情。
def set_audience
if current_user
session[:audience] ||= current_user.audience
else
session[:audience] ||= 'general'
end
end
session[:audience]
然后在我的控制器和视图上的任何地方调用。似乎很好,只是我在 New Relic 日志中看到有时没有设置会话,因此应用程序得到一个讨厌的 nil。
我想得更好,我应该使用实例变量,也许更多这样的东西。
def set_audience
if current_user
session[:audience] ||= current_user.audience
end
@audience = session[:audience]
@audience = 'general' if @audience.empty?
end
然后调用@audience
我的应用程序。
这个对吗?我想确保我使用了首选的方法。