当我有一个会话变量时,Codeigner缓存


Codeigniter caching when I have a session variable

我面临一个问题。我有一个页面,当用户登录时,我们在页面顶部有登录按钮。登录按钮更改为myaccount下拉列表并加载同一页面。

我在控制器中使用缓存来加载页面视图以提高速度。但问题是,当用户使用登录按钮登录页面时,是从缓存加载的,而不是从带有下拉菜单的页面加载的。

 <?php if($this->session->userdata('user_id') != ''){?>
 <ul class="nav nav-pills">
     <li class="dropdown pull-right">
                    <ul class="dropdown-menu">
                    <li><a href="<?php echo base_url();?>account-details"><i class="icon-briefcase icon-black"></i> Wallet</a></li>
                   <li><a href="<?php echo $this->session->userdata('logout')?>"><i class="icon-off icon-black"></i> Logout</a></li>                                                                                    
                     </ul>
                  </li>
              </ul>
           <?php }else{?>
                  <a href="<?php echo base_url();?>login_page/1" class="btn">Login / Sign Up</a>
                                                                    <?php
                                         }?>
    </div>
    </div>
    </div>

不要缓存特定于会话的内容。

弄清楚标头的哪些部分是缓慢的,并且是可缓存的。只缓存那些部分。你也可以使用JavaScript来做一些动态技巧,但它会变得非常复杂,非常快。

我认为你可以考虑这两个选项:

1.不要使用CI的通用缓存,而是使用类似的缓存库http://philsturgeon.co.uk/code/codeigniter-cache

2.破解CCD_ 1。在第265行(CI 1.7.2),它检查是否启用了缓存。更改该行,使其在会话表上为SELECT时不会执行此操作。