RailsCasts中文版,#1 Caching with Instance Variables 缓存实例变量
来源:互联网 发布:bt软件 编辑:程序博客网 时间:2024/06/05 09:42
class ApplicationController < ActionController::Base def current_user User.find(session[:user_id]) endend
这是一个在Action中的场景,上面的代码调用User的find方法传入会话中的user_id从数据库中读取当前登陆的用户信息。如果这个方法将会在一次页面请求中重复调用多次,将意味着会多次访问数据库。通过将第一次调用时候的结果缓存在实例变量中供下次调用使用可以解决重复数据库访问导致的效率的问题。
@current_user ||= User.find(session[:user_id])
请注意实例变量后面的||(或)操作符。第一次调用这条语句时,@current_user变量没有赋过值会是nil。这时会执行后面的查询数据库操作并将返回结果赋给@current_user。接下来如果再次调用这个方法,@current_user已经有值了,便不会进行查询操作直接返回结果,代码修改带来了效率的提升。
class ApplicationController < ActionController::Base def current_user @current_user ||= User.find(session[:user_id]) endend
修改后的代码。
作者授权:You are welcome to post the translated text on your blog as well if the episode is free(not Pro). I just ask that you post a link back to the original episode on railscasts.com.
原文链接:http://railscasts.com/episodes/1-caching-with-instance-variables
- RailsCasts中文版,#1 Caching with Instance Variables 缓存实例变量
- Railscasts #1 Caching with Instance Variables缓存实例变量
- RailsCasts中文版,#13 Dangers of Model in Session 不要在会话中缓存模型实例
- **浅述IOS成员变量(Member variables)和实例变量(Instance varialbes)的区别**
- RailsCasts中文版,#23 Counter Cache Column 计数器缓存字段
- Faking instance variables in Objective-C categories with Associative References
- RailsCasts 1
- the object's instance variables initlization 对象变量
- RailsCasts中文版,#6 Shortcut Blocks with Symbol to_proc 通过to_proc为代码块逻辑命名
- python global variables,member variables,instance variables
- @package Instance Variables
- Properties vs instance variables
- Instance Variables in ruby
- Runtime--Instance Variables
- asp.net 数据缓存System.Web.Caching.Cache 实例运用
- RailsCasts中文版,#15 Fun with Find Conditions 使用hash为查询条件以便生成正确语法的SQL查询
- System.Web.Caching 缓存管理1
- RailsCasts中文版,#10 Refactoring User Name Part 1 重构实战1
- c++学习之char型字符串与函数,char* 做返回值
- 许多年以后
- android imagebutton 带文字图片的实现方法
- CallBack机制
- Material Determination, Listing, Exclusion, and Proposal
- RailsCasts中文版,#1 Caching with Instance Variables 缓存实例变量
- Android应用开发揭秘的第18个程序5_13_SetFlags修改版和高仿版的源码注释
- 读写文件
- PHP工程师面临成长瓶颈
- 一道几何数学题:求关系式
- ubuntu下编写c语言程序
- bacula网络备份与恢复
- java经典问题_奖金是多少?
- 设计模式(18) ------------备忘录模式