thinkphp緩存的使用
① Thinkphp中關於靜態緩存的定義格式為全局的操作靜態規則
ThinkPHP內置了靜態緩存的功能,並且支持靜態緩存的規則定義。
要使用靜態緩存功能,需要開啟HTML_CACHE_ON 參數,並且使用HTML_CACHE_RULES配置參數設置靜態緩存規則文件 。
靜態規則的定義方式如下:
'HTML_CACHE_ON'=>true,
'HTML_CACHE_RULES'=> array(
'ActionName' => array('靜態規則', '靜態緩存有效期', '附加規則'),
'MoleName(小寫)' => array('靜態規則', '靜態緩存有效期', '附加規則'),
'MoleName(小寫):ActionName' => array('靜態規則', '靜態緩存有效期', '附加規則'),
'*' => array('靜態規則', '靜態緩存有效期', '附加規則'),
//…更多操作的靜態規則
)
靜態緩存文件的根目錄在HTML_PATH 定義的路徑下面,並且只有定義了靜態規則的操作才會進行靜態緩存,注意,靜態規則的定義有三種方式:
第一種是定義全局的操作靜態規則,例如定義所有的read操作的靜態規則為
'read'=>array('{id}','60')
其中,{id} 表示取$_GET['id'] 為靜態緩存文件名,第二個參數表示緩存60秒
第二種是定義全局的模塊靜態規則,例如定義所有的User模塊的靜態規則為
'user:'=>array('User/{:action}_{id}','600')
其中,{:action} 表示當前的操作名稱 靜態
第三種是定義某個模塊的操作的靜態規則,例如,我們需要定義Blog模塊的read操作進行靜態緩存
'blog:read'=>array('{id}',0)
有個別特殊的規則,例如空模塊和空操作的靜態規則的定義,可以使用下面的方式:
'empty:index'=>array('{:mole}_{:action}',0) // 定義空模塊的靜態規則
'User:_empty'=>array('User/{:action}',0) // 定義空操作的靜態規則
第四種方式是定義全局的靜態緩存規則,這個屬於特殊情況下的使用,任何模塊的操作都適用,例如
'*'=>array('{$_SERVER.REQUEST_URI|md5}'),
根據當前的URL進行緩存
靜態規則是用於定義要生成的靜態文件的名稱,寫法可以包括以下情況
1、使用系統變數 包括 _GET _REQUEST _SERVER _SESSION _COOKIE
格式:
{$_×××|function}
例如:
{$_GET.name} {$_SERVER. REQUEST_URI|md5}
2、使用框架特定的變數
例如:{:app}、{:group} 、{:mole} 和{:action} 分別表示當前項目名、分組名、模塊名和操作名
3、使用_GET變數
{var|function}
也就是說 {id} 其實等效於 {$_GET.id}
4、直接使用函數
{|function}
例如:{|time}
5、支持混合定義,例如我們可以定義一個靜態規則為:
'{id},{name|md5}'
在{}之外的字元作為字元串對待,如果包含有」/」,會自動創建目錄。
例如,定義下面的靜態規則:
{:mole}/{:action}_{id}
則會在靜態目錄下面創建模塊名稱的子目錄,然後寫入操作名_id.shtml 文件。
靜態有效時間 單位為秒如果不定義,則會獲取配置參數HTML_CACHE_TIME 的設置值,如果定義為0則表示永久緩存。
附加規則通常用於對靜態規則進行函數運算,例如
'read'=>array('Think{id},{name}','60', 'md5')
翻譯後的靜態規則是 md5('Think'.$_GET['id']. ', '.$_GET['name']);
和靜態緩存相關的配置參數包括:
HTML_CACHE_ON 是否開啟靜態緩存功能
HTML_FILE_SUFFIX 靜態文件後綴 慣例配置的值是 .html
HTML_CACHE_TIME 默認的靜態緩存有效期 默認60秒 可以在靜態規則定義覆蓋
② thinkphp怎麼寫更新緩存功能
使用緩存的場景大概是符合這一點:數據改變的頻率不快。也就是說:一個數據,如果好幾個小時,甚至好幾天都不發生改變,那麼就可以使用緩存。 使用緩存的模式是這樣: if(緩存不存在) { 從資料庫中取出數據,存入緩存,然後給緩存設置一個時間 } else { 取出緩存中的數據 } 如果是數據基本上永遠都不變的話,那麼可以使用「頁面靜態化」的技術,「頁面靜態化」比「緩存」更加提高網站訪問的性能。
ThinkPHP在數據緩存方麵包括文件方式、共享內存方式和資料庫方式在內的多種方式進行緩存,通過插件方式還可以增加以後需要的緩存類,讓應用開發可
以選擇更加適合自己的緩存方式,從而有效地提高應用執行效率。目前已經支持的緩存方式包括:File、Apachenote、Apc、
Eaccelerator、Memcache、Shmop、Sqlite、Db、Redis和Xcache。
為了開發的方便,可以把緩存給去除。
1.找到ThinkPHPCommonconvention.php和ThinkPHPCommondebug.php
2.打開這兩個文件找到你想要的設置即可。
debug.php中
'TMPL_CACHE_ON'=>false, // 默認開啟模板緩存
復制代碼
convention.php中'
TMPL_CACHE_ON' => false, // 默認開啟模板編譯緩存 false 的話每次都重新編譯模板
'ACTION_CACHE_ON' => false, // 默認關閉Action 緩存
'HTML_CACHE_ON' => false, // 默認關閉靜態緩存
復制代碼
thinkphp 怎麼關閉全部緩存?(
APP_DEBUG=>true
DB_FIELD_CACHE=>false
HTML_CACHE_ON=>false
復制代碼
關閉ThinkPHP模板緩存
最後自己找見了,在config.php裡面加上一句
'TMPL_CACHE_ON' => false,
'TMPL_CACHE_ON' => false,
復制代碼
這樣每次運行都重新生成緩存
③ thinkphp 如何實現清除緩存
define('RUNTIME_PATH','./runtime/'.APP_NAME.'/');
首先一開始的時候把緩存目錄提出,讓所有緩存都放入一個目錄,這樣清理緩存就很容易了。
ThinkPHP默認使用的是文件緩存,那麼就只要把緩存文件刪除就可以了。
可以使用:
import('ORG.Io.Dir');
Dir::delDir('./runtime/');
④ Thinkphp3.0版本的靜態緩存該如何配置
'HTML_CACHE_ON' => true, // 開啟靜態緩存'HTML_CACHE_TIME' => 60, // 全局靜態緩存有效期(秒)'HTML_FILE_SUFFIX' => '.shtml', // 設置靜態緩存文件後綴'HTML_CACHE_RULES' => array( // 定義靜態緩存規則 // 定義格式1 數組方式 '靜態地址' => array('靜態規則', '有效期', '附加規則'), // 定義格式2 字元串方式 '靜態地址' => '靜態規則', )
手冊上是這樣配的,你是不是寫的作用於不對,要在config文件夾中配置。
⑤ thinkphp f方法怎麼獲取緩存文件
F方法的特點是:
簡單數據緩存;
文件形式保存;
採用PHP返回數據方式載入緩存;
支持子目錄緩存以及自動創建;
支持刪除緩存和批量刪除;
寫入和讀取緩存
F('data','test data');
默認的保存起始路徑是DATA_PATH(該常量在默認配置位於RUNTIME_PATH.'Data/'下面),也就是說會生成文件名為DATA_PATH.'data.php'的緩存文件。
注意:確保你的緩存標識的唯一,避免數據覆蓋和沖突。
下次讀取緩存數據的時候,使用:
$Data = F('data');
我們可以採用子目錄方式保存,例如:
F('user/data',$data); // 緩存寫入
F('user/data'); // 讀取緩存
就會生成DATA_PATH.'user/data.php' 緩存文件,如果user子目錄不存在的話,則會自動創建,也可以支持多級子目錄,例如:
F('level1/level2/data',$data);
如果需要指定緩存的起始目錄,可以用下面的方式:
F('data',$data,TEMP_PATH);
獲取的時候則需要使用:
F('data','',TEMP_PATH);
刪除緩存
刪除緩存也很簡單,使用:
F('data',NULL);
第二個參數傳入NULL,則表示刪除標識為data的數據緩存。
支持批量刪除功能,尤其是針對子目錄緩存的情況,假設我們要刪除user子目錄下面的所有緩存數據,可以使用:
F('user/*',NULL);
又或者使用過濾條件刪除,例如:
F('user/[^a]*',NULL);