码迷,mamicode.com
首页 > 其他好文 > 详细

Caching with Instance Variables 缓存与实例变量

时间:2015-10-12 01:49:45      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:

class ApplicationController < ActionController::Base

  def current_user

     User.find(session[:user_id])
   end
end

上面那段代码的意思是定义一个current_user的方法,函数的作用是调用User中的find方法传入会话中的user_id从数据库读取当前登录大的用户信息。如果这个方法被多次调用,将会多次访问数据库,可以定义一个实例变量,将第一次调用时候的结果缓存到实例变量中供下次调的时候使用可以解决重复数据库访问的问题

   改写为:@current_user||=User.find(session[:user_id])

    第一次调用的时候@current_user变量的数值为空,执行后面的查询数据库操作,并将结果返回给@current_user储存,下次如果再调用这个方法的时候就不会执行查询数据库的操作,直接返回结果。通过代码大大提升了效率。

 

Caching with Instance Variables 缓存与实例变量

标签:

原文地址:http://www.cnblogs.com/JackyKun/p/4870553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!