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

     
  • 相关阅读:
    Servlet
    Web服务器和Tomcat
    DOM文档对象模型
    JavaScript总结
    CSS总结
    商城——购物车模块
    用户注册登录认证模块
    P2P技术之STUN、TURN、ICE详解
    P2P中的NAT穿越(打洞)方案详解
    NAT技术详解
  • 原文地址:https://www.cnblogs.com/JackyKun/p/4870553.html
Copyright © 2011-2022 走看看