當前位置:首頁 > PHP教程 > php應用 > 列表

CodeIgniter框架中啟用和清除緩存的教程

發布: 來源: PHP粉絲網  添加日期:2017-03-23 10:29:01 瀏覽: 評論:0 

CodeIgniter框架啟動與緩存問題許多的新手都不知道如何來操作了,下面我們就一起來看一篇關于CodeIgniter框架中啟用和清除緩存例子,具體如下所示。

Codeigniter支持緩存技術,以達到最快的速度。盡管CI已經相當高效了,但是網頁中的動態內容、主機的內存CPU和數據庫讀取速度等因素直接影響了網頁的加載速度。依靠網頁緩存,你的網頁可以達到近乎靜態網頁的加載速度,因為他們將程序輸出的結果保存到硬盤上了。

緩存是怎么工作的?

CI支持每個頁面單獨緩存,而且可以設置緩存更新時間。當一個網頁第一次被加載的時候,緩存文件將被保存到application/cache文件夾。下次訪問的時候,系統就會直接讀取緩存文件,然后返回給用戶的瀏覽器。如果緩存文件過期,它將被刪除并重新生成。

注意:Benchmark標簽在使用了緩存的頁面仍然可用。

啟動緩存:

啟用緩存功能,只需要將下面的代碼放入你的任何一個控制器(controller)的方法(function)內:

$this->output->cache(n);

其中n是你希望緩存更新的分鐘數。可以使用m/60來精確到秒,例如1/60,則是精確到1秒 上面的代碼可以放到任何一個function里面。他的出現順序對緩存并沒有影響,所以將它放在你認為最合乎邏輯的地方。一旦上面的代碼放到了控制器的方法中,頁面就會被緩存。 警告:由于CI存儲緩存文件的方式,只有通過view文件的輸出才能被緩存。 注意:在緩存文件產生之前,請確保application/cache文件夾可寫。

清除緩存:

如果你不再想使用緩存,僅需將上面的代碼從你的controller里面刪除即可。注意:這樣做并不能讓緩存文件立即消失,它將會自動過期并被刪除。如果你想立即刪除那些文件,就必須自己動手了。

可手動設置緩存開關。如果您想保留某些查詢不被緩存 這個功能就十分有用。例如:

  1. // 打開緩存開關 
  2. $this->db->cache_on(); 
  3. $query = $this->db->query("SELECT * FROM mytable"); 
  4. // 使下面這條查詢不被緩存 
  5. $this->db->cache_off(); 
  6. $query = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'"); 
  7. // Turn caching back on 
  8. $this->db->cache_on(); 
  9. $query = $this->db->query("SELECT * FROM another_table"); 

刪除緩存文件與特定網頁。如果你需要清除緩存后,更新您的數據庫。

緩存系統會在緩存存放目錄中建立與被訪問的URL所對應的子目錄,同時把緩存文件存放在那個子目錄中.緩存主目錄就是您在application/config/database.php 里面設置的緩存目錄. 例如, 如果您正在瀏覽地址為 example.com/index.php/blog/comments的頁面, 緩存系統會把所有生成的緩存文件放進一個以 blog+comments做為名稱的文件夾里. 如果您要刪除關于剛才提到的這個例子與之對應的緩存文件 需要執行以下代碼:

$this->db->cache_delete('blog', 'comments');

$this->db->cache_delete('blog', 'comments'),我在實際測試的時候不起作用,不知道為什么原因,不知道是不是小bug?但是下面的$this->db->cache_delete_all()是可以的,沒有問題。

如果您不使用任何參數,目前的URI設置將決定什么時候應該清除/更新 該緩存。

清除所有所有的緩存文件。例子:

$this->db->cache_delete_all();

緩存小記:

1.數據庫緩存,數據庫緩存主要是針對于SELECT查詢:

  1. // 打開緩存開關 
  2. $this->db->cache_on(); 
  3. $query1 = $this->db->query("SELECT * FROM mytable"); 
  4. // 使下面這條查詢不被緩存 
  5. $this->db->cache_off(); 
  6. $query2 = $this->db->query("SELECT * FROM members WHERE member_id = '$current_user'"); 
  7. // 再次打開緩存開關 
  8. $this->db->cache_on(); 
  9. $query3 = $this->db->query("SELECT * FROM another_table");   

這樣query1和query3就被緩存在文件中了,緩存的路徑根據您的URL而定,如example.com/index.php/blog/comments的頁面, 緩存系統會把所有生成的緩存文件放進一個以 blog+comments做為名稱的文件夾里. 如果您要刪除關于剛才提到的這個例子與之對應的緩存文件 需要執行以下代碼:

$this->db->cache_delete('blog', 'comments');//$this->db->cache_delete('blog', 'comments')#來刪除緩存     如果要清除所有數據庫緩存:

$this->db->cache_delete_all();    *其cache模式在于針對不同的uri就會生成cache文件,如果URL中參數不同,則 cache文件就會不同,從而產生了漏洞。如果訪問者構建自動生成URI,不斷向服務器發起請求,就會瞬間產生大量的垃圾文件,導致系統文件臃腫。

2.頁面緩存

$this->output->cache(n); // 請確保application/cache可寫,n 是你希望緩存更新的 分鐘 數。可以使用 m/60 來精確到秒,例如 1/60 ,則是精確到 1秒

3.序例化緩存到文件

  1. $this->load->driver('cache'array('adapter' => 'apc''backup' => 'file')); 
  2.  
  3. if ( ! $foo = $this->cache->get('foo')) 
  4.  { 
  5.       echo 'Saving to the cache!<br />'
  6.       $foo = 'foobarbaz!'
  7.  
  8.      // Save into the cache for 5 minutes 
  9.       $this->cache->save('foo'$foo, 300); 
  10.  } 
  11.  
  12. echo $foo;

Tags: CodeIgniter 清除緩存

分享到:

福利彩票25选5开奖结果