ThinkPHP的快取技術

2021-09-22 21:41:53 字數 1557 閱讀 5319

原文:

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...