如果沒有快取的**是百萬級或者千萬級的訪問量,會給資料庫或者伺服器造成很大的壓力,通過快取,大幅減少伺服器和資料庫的負荷。假如我們把讀取資料的過程分為三個層,第乙個是訪問層,第乙個是快取層,第三個是資料庫訪問層。如果沒有快取層,訪問層是直接從資料庫訪問層讀取資料,而設定快取後,訪問層不再是直接在資料庫訪問層讀取,而是從快取層讀取資料。
我們做個簡單的對比,假設乙個頁面,在乙個小時可被訪問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
*/
05
return
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秒
15
16
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
// 本類由系統自動生成,僅供測試用途
03
class
indexaction
extends
action
21
22
dump(
$list
);
訪問 輸出:
這是直接讀取資料庫的資料
array(10)
...
說明,第一次執行時,會列印出如上面所示資訊,重新整理一下頁面後,少了「 這是直接讀取資料庫的資料",說明讀取的是先前生成的快取資料。
ThinkPHP的快取技術
原文 thinkphp的快取技術 如果沒有快取的 是百萬級或者千萬級的訪問量,會給資料庫或者伺服器造成很大的壓力,通過快取,大幅減少伺服器和資料庫的負荷。假如我們 把讀取資料的過程分為三個層,第乙個是訪問層,第乙個是快取層,第三個是資料庫訪問層。如果沒有快取層,訪問層是直接從資料庫訪問層讀取資料,而...
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...