《PHP教程:ThinkPHP實現靜態緩存和動態緩存示例代碼》要點:
本文介紹了PHP教程:ThinkPHP實現靜態緩存和動態緩存示例代碼,希望對您有用。如果有疑問,可以聯系我們。
相關主題:thinkphp教程
靜態緩存PHP編程
要使用靜態緩存功能,需要開啟HTML_CACHE_ON參數,并且使用HTML_CACHE_RULES配置參數設置靜態緩存規則文件.PHP編程
定義靜態規則PHP編程
'HTML_CACHE_ON' => true, // 開啟靜態緩存 'HTML_CACHE_TIME' => 60, // 全局靜態緩存有效期(秒) 'HTML_FILE_SUFFIX' => '.shtml', // 設置靜態緩存文件后綴 'HTML_CACHE_RULES' => array( // 定義靜態緩存規則 // 定義格式1 數組方式 '靜態地址' => array('靜態規則', '有效期', '附加規則'), // 定義格式2 字符串方式 '靜態地址' => '靜態規則', )
靜態緩存文件的根目錄在HTML_PATH定義的路徑下面,并且只有定義了靜態規則的操作才會進行靜態緩存. 并且靜態緩存支持不同的存儲類型. 靜態緩存僅在GET請求下面有效.
PHP編程
靜態地址PHP編程
全局的操作靜態規則
PHP編程
'read'=>array('{id}',60)//定義所有的read操作的靜態規則
定義全局的控制器靜態規則
PHP編程
'user:'=>array('User/{:action}_{id}','600')//定義所有的User控制器的靜態規則
定義某個控制器的操作的靜態規則//定義Blog控制器的read操作進行靜態緩存
PHP編程
'blog:read'=>array('{id}',0)//參數為0表示永久緩存
定義全局的靜態緩存規則
PHP編程
'*'=>array('{$_SERVER.REQUEST_URI|md5}')//這個屬于特殊情況下的使用,任何模塊的操作都適用
靜態規則PHP編程
靜態規則是用于定義要生成的靜態文件的名稱,靜態規則的定義要確保不會沖突.
PHP編程
使用系統變量
PHP編程
{$_×××|function}//_GET、_REQUEST、_SERVER、_SESSION、_COOKIE {$_GET.name} {$_SERVER.REQUEST_URI|md5}
使用框架自定義的變量
PHP編程
使用_GET變量
PHP編程
{var|function}//{id}其實等效于 {$_GET.id}
直接使用函數
PHP編程
{|function}//{|time},time函數獲取時間后作為文件名稱
混合定義
PHP編程
'{id},{name|md5}' //在{}之外的字符作為字符串對待,如果包含有"/",會自動創建目錄. {:module}/{:action}_{id}//會在靜態目錄下面創建模塊名稱的子目錄,然后寫入操作名_id.shtml 文件.
動態緩存PHP編程
[S方法數據緩存]PHP編程
緩存初始化
PHP編程
S(array('type'=>'xcache','expire'=>60));
系統目前已經支持的緩存類型包括:Apachenote、Apc、Db、Eaccelerator、File、Memcache、Redis、Shmop、Sqlite、Wincache和Xcache.如果S方法不傳入type參數初始化的話,則讀取配置文件中設置的DATA_CACHE_TYPE參數值作為默認類型.同樣的道理,prefix參數如果沒有傳入會讀取配置文件的DATA_CACHE_PREFIX參數值,expire參數沒有傳入則讀取DATA_CACHE_TIME配置值作為默認.
PHP編程
對于全局的緩存方式,一般我們建議添加prefix(緩存前綴)參數用以區分不同的應用,以免混淆.PHP編程
設置緩存
PHP編程
數據緩存可以支持緩存隊列,簡單的說就是可以限制緩存的數量,只需要在初始化的時候指定length參數.
PHP編程
S('name',$value); S('name',$value,300);//緩存數據300秒 S('name',$value,array('type'=>'file','expire'=>300));//改變之前的緩存方式或者更多的參數 S(array('type'=>'xcache','length'=>100,'expire'=>60));//系統只會緩存最近的100條緩存數據.
讀取緩存
PHP編程
$value = S('name');//如果緩存標識不存在或者已經過期,則返回false,否則返回緩存值.
刪除緩存
PHP編程
S('name',null);
注意:使用每種緩存時,需要ThinkPHP加載對應的驅動文件,并設置好對應的配置.PHP編程
使用實例
PHP編程
$user = M('User'); $value = S('list'); if (empty($value)) { $list = $user->select(); S('list', $list, 3600); echo '這個是直接從數據庫中讀取的文件'; dump($list); } else { echo '這個是緩存文件'; dump($value); }
[快速緩存]PHP編程
系統還提供了一個快速緩存方法F可以用來更快的操作,但是,F方法沒有有效期,F方法可以支持不同的存儲類型,如果是文件類型的話,默認保存在DATA_PATH目錄下面.
PHP編程
快速緩存Data數據
PHP編程
F('data',$Data); F('data',$Data,TEMP_PATH);//快速緩存Data數據,保存到指定的目錄 F('User/data',$Data);//F方法支持自動創建緩存子目錄,在DATA_PATH目錄下面緩存data數據,如果User子目錄不存在,則自動創建.
獲取緩存數據
PHP編程
$Data = F('data');
刪除緩存數據
PHP編程
F('data',NULL);
[查詢緩存]PHP編程
查詢緩存功能支持所有的數據庫,并且支持所有的緩存方式和有效期.
PHP編程
在使用查詢緩存的時候,只需要調用Model類的cache方法.
PHP編程
$Model->cache(true)->where('status=1')->select();
如果使用了cache(true),則在查詢的同時會根據當前的查詢條件等信息生成一個帶有唯一標識的查詢緩存,如果指定了key的話,則直接生成名稱為key的查詢緩存.
PHP編程
$Model->cache('cache_name')->select();
默認情況下緩存方式采用DATA_CACHE_TYPE參數設置的緩存方式(系統默認值為File表示采用文件方式緩存),緩存有效期是DATA_CACHE_TIME參數設置的時間,也可以單獨制定查詢緩存的緩存方式和有效期.
PHP編程
$Model->cache(true,60,'xcache')->select();
如果指定了查詢緩存的key的話,則可以在外部通過S方法直接獲取查詢緩存的內容.
PHP編程
$value = S('cache_name');
除了select方法之外,查詢緩存還支持find和getField方法,以及他們的衍生方法(包括統計查詢和動態查詢方法).
PHP編程
$Model->where($map)->cache('key',60)->find();
本文主要來自官方文檔,如有問題可參見ThinkPHP3.2官方文檔-緩存
PHP編程
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持維易PHP.PHP編程
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/879.html