国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP模板引擎Smarty的緩存使用總結

2020-03-22 18:08:20
字體:
來源:轉載
供稿:網友
這里我們將分析一下如何開啟和使用smarty緩存,如何清除smarty緩存以及smarty的全局緩存,部分緩存,局部緩存三種緩存機制。一、開啟和使用smarty緩存要開啟smarty的緩存,只需在smarty設置參數里面將caching設為true,并指定cache_dir即可。同時設置cache_lefetime參數指定緩存生存時間(單位為秒)。如果要對相同頁面生成多個不同的緩存,可以在display或fetch中加入第二參數cache_id,如:復制代碼 代碼如下:$smarty- display('index.tpl',$my_cache_id);此特性可用于對不同的$_GET進行不同的緩存。

二、清除smarty緩存清除smarty緩存一般有以下幾種方式:
復制代碼 代碼如下:
clear_all_cache();//清除所有緩存
clear_cache('index.tpl');//清除指定模板index.tpl的緩存
clear_cache('index.tpl',cache_id);//清除指定模板指定id的緩存
三、全局緩存全局緩存就是為整個網站的全部頁面都生成緩存頁面。設置全局緩存首先我們要操作smarty的配置文件,開啟緩存,指定緩存文件目錄,并設置緩存的存活時間,設置參數如下:
復制代碼 代碼如下:
$smarty- cache_dir='./cache/'; //設置存放緩存文件的文件夾
$smarty- caching=1;//開啟緩存 0、FALSE代表關閉|非0數字、TRUE代表開啟
$smarty- cache_lifetime=3600//單位為秒(如果填寫-1為永不過期)
接下來我們要去具體的html' target='_blank'>php頁面設置與之對應的具體緩存文件的名字,在php頁面中可按如下寫法:復制代碼 代碼如下:$smarty- display('list2.html',md5($_SERVER['REQUEST_URI']));//將當前頁面的URL(包含?后面的所有參數)進行md5加密然后設置緩存文件名需要注意的是:
復制代碼 代碼如下:
$smarty- display('與之對應的模板文件名','緩存文件名的補充部分')這個方法。第二個參數不是必須的,如果不寫的話,緩存文件名就是模板文件名經過加密處理后的文件。但是這樣會碰到一個比較棘手的問題,例如:
復制代碼 代碼如下:
http://www.phpstudy.net/article.php?id=5
http://www.phpstudy.net/article.php?id=7這兩個個URL對應應該的不同的內容,但是生成的緩存文件名都是 article 加密后的結果。這就會導致用戶想要查詢的是不同的內容,訪問的卻是同一個緩存文件。所以建議加上一個輔助參數,將訪問url(包含?后面的所有參數)md5加密是比較靠譜的一種做法。四、部分緩存部分緩存就是指定一些文件生成緩存文件,而非網站的全部文件。部分緩存的實質其實是部分不緩存,也就是說不是指定哪些文件生成緩存,而是指定具體一些文件不生成緩存。現在假設有3個文件:
復制代碼 代碼如下:
http://www.phpstudy.net/index.php //需要緩存
http://www.phpstudy.net/cate.php //需要緩存
http://www.phpstudy.net/article.php //不需要緩存前面兩個文件的php文件里面還是需要寫上$smarty- display('與之對應的模板文件名','緩存文件名的補充部分')這句。但在第三個文件中我們要特別指明不需要生成緩存,具體的方法是在display指定模板之前寫上下面這段代碼:
復制代碼 代碼如下:
$smarty- clear_cache('與之對應的模板文件名');//其實寫在$smarty- display('與之對應的模板文件名')之前還是之后都可以當然$smarty- display('與之對應的模板文件名')還是要寫,本來就不想生成緩存,第二個參數也就不需要了。注意:$smarty- clear_cache()和$smarty- display()的參數一定要寫成一致的五、局部緩存局部緩存就是指定同一頁面下的某些局部地方生成緩存。其實它不是指定哪些局部生成緩存,而是哪些局部不生成緩存(這和部分緩存的操作思想是類似的)。我們先來看下面一個例子:article.php 文件部分內容如下:
復制代碼 代碼如下:
?php$time=time();$smarty- assign('time',$lanmuarr);function insert_timeget(){return time();}$smarty- display('article.html');對應模板文件article.html部分代碼如下:
復制代碼 代碼如下:
body {$time} !--開啟緩存后,重復刷新這個值不會變-- {insert name='timeget'} !--開啟緩存后,重復刷新這個值會變-- /body 這里對上面的例子做一下解釋:在PHP中我們只要定義了函數名為 insert_ (注意下劃線)自定義補充名的自定義函數,在其中返回的值,不需要assign()方法傳遞,就能直接在模板頁面中以{insert name='自定義補充名'}的方式調用,同時不會受到緩存的影響,而實時刷新。另外補充的一下是如果你感覺使用 Smarty 緩存不夠爽的話,還可以使用自定義緩存,如何使用自定義緩存呢?這里需要設置cache_handler_func使用自定義的函數處理緩存,如:
復制代碼 代碼如下:
$smarty- cache_handler_func="myCache";function myCache($action,&$smarty_obj,&$cache_content,$tpl_file=null,$cache_id=null,$compile_id=null){switch($action){case "read"://讀取緩存內容case "write"://寫入緩存case "clear"://清空}}

PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌江| 中方县| 南郑县| 巴林右旗| 旺苍县| 托克逊县| 平泉县| 清远市| 沁水县| 厦门市| 大埔县| 蚌埠市| 措美县| 河池市| 合阳县| 固原市| 北辰区| 延川县| 锦州市| 渑池县| 黑水县| 革吉县| 清丰县| 吉林省| 崇仁县| 喜德县| 达拉特旗| 石景山区| 兴海县| 桑植县| 沁水县| 阿拉善左旗| 通海县| 新疆| 连山| 安阳县| 广东省| 临西县| 宜丰县| 崇州市| 志丹县|