[英]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. db_driver.php
。 在第265行(CI 1.7.2)上,它檢查是否啟用了緩存。 更改該行,以便在會話表上執行SELECT時不執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.