国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > ThinkPHP > 正文

thinkphp的緩存技術

2024-09-09 15:19:56
字體:
來源:轉載
供稿:網友

如果沒有緩存的網站是百萬級或者千萬級的訪問量,會給數據庫或者服務器造成很大的壓力,通過緩存,大幅減少服務器和數據庫的負荷,假如我們把讀取數據的過程分為三個層,第一個是訪問層,第一個是緩存層,第三個是數據庫存取層,如果沒有緩存層,訪問層是直接從數據庫存取層讀取數據,而設置緩存后,訪問層不再是直接在數據庫存取層讀取,而是從緩存層讀取數據.

我們做個簡單的對比,假設一個頁面,在一個小時可被訪問100萬次,如果這個頁面每次被訪問的時候,都直接讀取數據庫后再編譯生成,在一個小時內將會重復性的生成100萬次,而如果這個頁面被周期性的緩存10分鐘,也就是每間隔10分鐘緩存數據才會被生成一次,一個小時內只會被生成6次,兩種方式一對比,效果明顯,兩種比較下服務器負荷的壓力比差別十幾萬倍以上,緩存技術將使得網站負載在高峰期游刃有余.

thinkphp的緩存方式有許多種,如File、Apachenote、Apc、Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache,現在我來說一下File緩存。

Thinkphp緩存文件的配置

Home是我建立的前臺項目,在Home/Conf/config.php找到緩存的配置文件,配置如下:

  1. <?php  
  2.   return array(      
  3.   'DB_TYPE'=>'mysql',      
  4.   'DB_HOST'=>'127.0.0.1',      
  5.  'DB_NAME'=>'w3note',      
  6.   'DB_USER'=>'root',      
  7.  'DB_PWD'=>'123456',      
  8.  'DB_PORT'=>'3306',      
  9.  'DB_PREFIX'=>'w3_',      
  10.  'DATA_CACHE_TYPE'=>'file',//設置緩存方式為file      
  11.  'DATA_CACHE_TIME'=>'600',//緩存周期600秒      
  12. );      
  13. ?> 

Thinkphp緩存函數的使用

在thinkphp中,我喜歡使用快捷緩存函數S()進行緩存,其用法如下:

  1. S('data',$Data);//使用data標識緩存$Data數據 
  2. S('data',$Data,600);// 緩存$Data數據600秒 
  3. $Data = S('data');// 獲取緩存數據 
  4. S('data',NULL);// 刪除緩存數據 

下面是是前臺項目控制器的完整代碼:

  1. <?php      
  2. // 本類由系統自動生成,僅供測試用途      
  3.  class IndexAction extends Action{      
  4.    public function index(){      
  5.        //如果有緩存,則讀取緩存數據      
  6.        //如果沒有緩存,則讀取數據庫當中的數據放入緩存      
  7.        $lists=S('lists');                    
  8.        if(emptyempty($lists)){                          
  9.          $news=M('news');  
  10.          $lists=$news->select();  
  11.          S('lists',$lists,600);  
  12.          echo '這是直接讀取數據庫的數據';      
  13.           }  
  14.        dump($list); 
  15. ?> 

訪問http://127.0.0.1/Home/index.php/Index/index 輸出,這是直接讀取數據庫的數據:

  1. array(10) { 
  2.   [0] => array(12) { 
  3.     ["id"] => string(1) "1" 
  4.     ["catid"] => string(2) "13" 
  5.     ["title"] => string(4) "thinkphp的緩存技術" 
  6.     ["content"] => string(8) "thinkphp的緩存技術" 
  7.     ["tags"] => string(4) "緩存" 
  8.     ["thumb"] => string(0) "" 
  9.     ["description"] => string(7) "thinkphp的緩存技術" 
  10.     ["inputtime"] => string(10) "1348370202" 
  11.     ["posid"] => string(1) "1" 
  12.     ["ord"] => string(1) "2" 
  13.     ["hits"] => string(1) "1" 
  14.     ["status"] => string(1) "1" 
  15.   } 

說明,第一次運行時,會打印出如上面所示信息,刷新一下頁面后,少了“ 這是直接讀取數據庫的數據",說明讀取的是先前生成的緩存數據.

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 水城县| 肥城市| 大足县| 祥云县| 师宗县| 瓦房店市| 阿勒泰市| 乌什县| 灵宝市| 噶尔县| 新闻| 巴楚县| 八宿县| 潼关县| 黄大仙区| 河曲县| 轮台县| 连州市| 铜陵市| 乌审旗| 通道| 神木县| 周宁县| 西宁市| 六安市| 天等县| 岢岚县| 大理市| 都江堰市| 辽阳市| 宁安市| 长宁县| 商洛市| 安义县| 富川| 建阳市| 峨眉山市| 本溪市| 阜城县| 将乐县| 赣州市|