原文:
thinkphp的快取技術
如果沒有快取的**是百萬級或者千萬級的訪問量,會給資料庫或者伺服器造成很大的壓力,通過快取,大幅減少伺服器和資料庫的負荷。假如我們 把讀取資料的過程分為三個層,第乙個是訪問層,第乙個是快取層,第三個是資料庫訪問層。如果沒有快取層,訪問層是直接從資料庫訪問層讀取資料,而設定快取 後,訪問層不再是直接在資料庫訪問層讀取,而是從快取層讀取資料。
我們做個簡單的對比,假設乙個頁面,在乙個小時可被訪問100萬次,如 果這個頁面每次被訪問的時候,都直接讀取資料庫後再編譯生成,在乙個小時內將會重複性的生成100萬次;而如果這個頁面被週期性的快取10分鐘,也就是每 間隔10分鐘快取資料才會被生成一次,乙個小時內只會被生成6次,兩種方式一對比,效果明顯,兩種比較下伺服器負荷的壓力比差別十幾萬倍以上,快取技術將 使得**負載在高峰期游刃有餘。
thinkphp的快取方式有許多種,如file、apachenote、apc、eaccelerator、memcache、shmop、sqlite、db、redis和xcache,現在我來說一下file快取。
thinkphp快取檔案的配置
home是我建立的前台專案,在home\conf\config.php找到快取的配置檔案,配置如下:
01<?php
02/**
03* 配置檔案
04*/
05return array(
06'db_type'=>'mysql',
07'db_host'=>'127.0.0.1',
08'db_name'=>'w3note',
09'db_user'=>'root',
10'db_pwd'=>'123456',
11'db_port'=>'3306',
12'db_prefix'=>'w3_',
13'data_cache_type'=>'file',//設定快取方式為file
14'data_cache_time'=>'600',//快取週期600秒
1516
17);
18?>
thinkphp快取函式的使用
在thinkphp中,我喜歡使用快捷快取函式s()進行快取; 其用法如下:
s('data',$data);//使用data標識快取$data資料
s('data',$data,600);// 快取$data資料600秒
$data = s('data');// 獲取快取資料
s('data',null);// 刪除快取資料
下面是是前台專案控制器的完整**
01<?php
02// 本類由系統自動生成,僅供測試用途
03class indexaction extends action
2122
dump($list);
訪問 輸出:
這是直接讀取資料庫的資料
array(10)
...說明,第一次執行時,會列印出如上面所示資訊,重新整理一下頁面後,少了「 這是直接讀取資料庫的資料",說明讀取的是先前生成的快取資料。
thinkphp快取技術 (快取函式的使用S
如果沒有快取的 是百萬級或者千萬級的訪問量,會給資料庫或者伺服器造成很大的壓力,通過快取,大幅減少伺服器和資料庫的負荷。假如我們把讀取資料的過程分為三個層,第乙個是訪問層,第乙個是快取層,第三個是資料庫訪問層。如果沒有快取層,訪問層是直接從資料庫訪問層讀取資料,而設定快取後,訪問層不再是直接在資料庫...
thinkphp靜態快取
thinkphp裡面內建了乙個 靜態快取功能,說靜態快取可能對我這種菜鳥而言不太好理解。其實靜態快取就是將thinkphp的某乙個操作顯示出來的頁面生成乙個html檔案儲存在設 置的路徑,當使用者再次訪問的時候,如果快取沒過期,那麼這個操作將不再執行它下面的php程式,而是直接呼叫生成的html快取...
ThinkPHP 清理快取
首先我我們引入log,cache use think cache use think log 1 清除模版快取 不刪除cache目錄 public function clear sys cache 2 清除模版快取 不刪除 temp目錄 public function clear temp ahce...