Caching with Instance Variables 缓存与实例变量

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储存,下次如果再调用这个方法的时候就不会执行查询数据库的操作,直接返回结果。通过代码大大提升了效率。

 
时间: 2025-01-15 00:58:55

Caching with Instance Variables 缓存与实例变量的相关文章

实例变量(instance var)与属性(@property)的关系

实例变量(instance var)与属性(@property)的关系 Objective-C 2.0之后,声明一个@property name自动产生一个实例变量,名为_name,因此省去实例变量和属性重复输入的麻烦.而使用@synthesize可以改变_name名称.@property和@synthesize不必成对出现. @property name:指示编译器自动合成setter和getter方法,setter方法名即setName,而getter方法名即name.@property后面

OC 实例变量(Instance Var)和成员变量(member var)区别

摘要:  Objective-C  引入了“实例变量"的概念,但同时, 也经常出现 “成员变量”的声音. 到底什么是实例变量,什么是成员变量,二者的区别是什么呢? 今天查看apple 的官方文档时(如下).https://developer.apple.com/library/mac/referencelibrary/GettingStarted/Learning_Objective-C_A_Primer/index.html 发现了一个新的名词: 成员变量(member variable).

oc 中四种实例变量的范围类型@[email&#160;protected]@[email&#160;protected]

To enforce the ability of an object to hide its data, the compiler limits the scope of instance variables—that is, limits their visibility within the program. 为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性 But to provide flexibility, it also lets you explicit

iOS中四种实例变量的范围类型@[email&#160;protected]@[email&#160;protected]

文档上记录是这样的 The Scope of Instance Variables To enforce the ability of an object to hide its data, the compiler limits the scope of instance variables—that is, limits their visibility within the program. 为了强制一个对象隐藏其数据,编译器限制实例变量范围以限制其在程序中的可见性 But to prov

Enterprise Library for .NET Framework 2.0缓存使用实例

Enterprise Library for .NET Framework 2.0 是微软发布的企业库,它支持.NET Framework 2.0.并且由一系列的企业应用程序块来构成.本文即以实例展示了Enterprise Library for .NET Framework 2.0缓存的使用方法,供大家参考. 关键代码如下: using Microsoft.Practices.EnterpriseLibrary.Caching; using Microsoft.Practices.Enterp

python中类变量和实例变量

1. 类变量和实例变量 在Python Tutorial中对于类变量和实例变量是这样描述的: Generally speaking, instance variables are for data unique to each instance and class variables are for attributes and methods shared by all instances of the class: 通常来说,实例变量是对于每个实例都独有的数据,而类变量是该类所有实例共享的属

Java初始化顺序(静态变量、静态初始化块、实例变量、实例初始化块、构造方法)

1.执行顺序 1.1.一个类中的初始化顺序 (静态变量.静态初始化块)=>(变量.初始化块.构造器). 1.2.两个具有继承关系类的初始化顺序 父类的(静态变量.静态初始化块)=> 子类的(静态变量.静态初始化块)=> 父类的(变量.初始化块.构造器)=> 子类的(变量.初始化块.构造器). 示例如下:(结果见注释) 1 class A { 2 public A() { 3 System.out.println("Constructor A."); 4 } 5

iOS 成员变量,实例变量,属性变量的区别,联系

在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyViewController :UIViewController { UIButton *myButton; } @property (nonatomic, retain) UIButton *myButton; @end 在现在iOS版本中: 苹果将默认编译器从GCC转换为LLVM(low leve

Objective-C 基本语法:实例变量与成员变量的区别.l........实例方法和类方法区别

http://leopard168.blog.163.com/blog/static/16847184420138153296930/ http://blog.csdn.net/thdxs/article/details/10988343 1.类方法是属于整个类,而不属于某个对象.2.类方法只能访问类成员变量,不能访问实例变量,而实例方法可以访问类成员变量和实例变量.3.类方法的调用可以通过类名.类方法和对象.类方法,而实例方法只能通过对象.实例方法访问.4.类方法只能访问类方法,而实例方法可以