天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP模板引擎Smarty的緩存使用總結(jié)

這里我們將分析一下如何開(kāi)啟和使用smarty緩存,如何清除smarty緩存以及smarty的全局緩存,部分緩存,局部緩存三種緩存機(jī)制。

一、開(kāi)啟和使用smarty緩存

要開(kāi)啟smarty的緩存,只需在smarty設(shè)置參數(shù)里面將caching設(shè)為true,并指定cache_dir即可。同時(shí)設(shè)置cache_lefetime參數(shù)指定緩存生存時(shí)間(單位為秒)。如果要對(duì)相同頁(yè)面生成多個(gè)不同的緩存,可以在display或fetch中加入第二參數(shù)cache_id,如:

復(fù)制代碼 代碼如下:$smarty->display('index.tpl',$my_cache_id);

此特性可用于對(duì)不同的$_GET進(jìn)行不同的緩存。

二、清除smarty緩存

清除smarty緩存一般有以下幾種方式:
復(fù)制代碼 代碼如下:
clear_all_cache();//清除所有緩存
clear_cache('index.tpl');//清除指定模板index.tpl的緩存
clear_cache('index.tpl',cache_id);//清除指定模板指定id的緩存

三、全局緩存

全局緩存就是為整個(gè)網(wǎng)站的全部頁(yè)面都生成緩存頁(yè)面。設(shè)置全局緩存首先我們要操作smarty的配置文件,開(kāi)啟緩存,指定緩存文件目錄,并設(shè)置緩存的存活時(shí)間,設(shè)置參數(shù)如下:
復(fù)制代碼 代碼如下:
$smarty->cache_dir='./cache/'; //設(shè)置存放緩存文件的文件夾
$smarty->caching=1;//開(kāi)啟緩存 0、FALSE代表關(guān)閉|非0數(shù)字、TRUE代表開(kāi)啟
$smarty->cache_lifetime=3600//單位為秒(如果填寫(xiě)-1為永不過(guò)期)

接下來(lái)我們要去具體的php頁(yè)面設(shè)置與之對(duì)應(yīng)的具體緩存文件的名字,在php頁(yè)面中可按如下寫(xiě)法:

復(fù)制代碼 代碼如下:$smarty->display('list2.html',md5($_SERVER['REQUEST_URI']));//將當(dāng)前頁(yè)面的URL(包含?后面的所有參數(shù))進(jìn)行md5加密然后設(shè)置緩存文件名

需要注意的是:
復(fù)制代碼 代碼如下:
$smarty->display('與之對(duì)應(yīng)的模板文件名','緩存文件名的補(bǔ)充部分')這個(gè)方法。

第二個(gè)參數(shù)不是必須的,如果不寫(xiě)的話,緩存文件名就是模板文件名經(jīng)過(guò)加密處理后的文件。但是這樣會(huì)碰到一個(gè)比較棘手的問(wèn)題,例如:
復(fù)制代碼 代碼如下:
http://www.jb51.NET/article.php?id=5
http://www.jb51.NET/article.php?id=7

這兩個(gè)個(gè)URL對(duì)應(yīng)應(yīng)該的不同的內(nèi)容,但是生成的緩存文件名都是 article 加密后的結(jié)果。這就會(huì)導(dǎo)致用戶想要查詢的是不同的內(nèi)容,訪問(wèn)的卻是同一個(gè)緩存文件。所以建議加上一個(gè)輔助參數(shù),將訪問(wèn)url(包含?后面的所有參數(shù))md5加密是比較靠譜的一種做法。

四、部分緩存

部分緩存就是指定一些文件生成緩存文件,而非網(wǎng)站的全部文件。部分緩存的實(shí)質(zhì)其實(shí)是部分不緩存,也就是說(shuō)不是指定哪些文件生成緩存,而是指定具體一些文件不生成緩存?,F(xiàn)在假設(shè)有3個(gè)文件:
復(fù)制代碼 代碼如下:
http://www.jb51.NET/index.php //需要緩存
http://www.jb51.NET/cate.php //需要緩存
http://www.jb51.NET/article.php //不需要緩存

前面兩個(gè)文件的php文件里面還是需要寫(xiě)上$smarty->display('與之對(duì)應(yīng)的模板文件名','緩存文件名的補(bǔ)充部分')這句。

但在第三個(gè)文件中我們要特別指明不需要生成緩存,具體的方法是在display指定模板之前寫(xiě)上下面這段代碼:
復(fù)制代碼 代碼如下:
$smarty->clear_cache('與之對(duì)應(yīng)的模板文件名');//其實(shí)寫(xiě)在$smarty->display('與之對(duì)應(yīng)的模板文件名')之前還是之后都可以

當(dāng)然$smarty->display('與之對(duì)應(yīng)的模板文件名')還是要寫(xiě),本來(lái)就不想生成緩存,第二個(gè)參數(shù)也就不需要了。

注意:$smarty->clear_cache()和$smarty->display()的參數(shù)一定要寫(xiě)成一致的

五、局部緩存

局部緩存就是指定同一頁(yè)面下的某些局部地方生成緩存。其實(shí)它不是指定哪些局部生成緩存,而是哪些局部不生成緩存(這和部分緩存的操作思想是類似的)。我們先來(lái)看下面一個(gè)例子:

article.php 文件部分內(nèi)容如下:
復(fù)制代碼 代碼如下:
<?php

$time=time();

$smarty->assign('time',$lanmuarr);

function insert_timeget(){

return time();

}

$smarty->display('article.html');

對(duì)應(yīng)模板文件article.html部分代碼如下:
復(fù)制代碼 代碼如下:
<body>

{$time}<!--開(kāi)啟緩存后,重復(fù)刷新這個(gè)值不會(huì)變-->

{insert name='timeget'}<!--開(kāi)啟緩存后,重復(fù)刷新這個(gè)值會(huì)變-->

</body>

這里對(duì)上面的例子做一下解釋:在php中我們只要定義了函數(shù)名為 insert_ (注意下劃線)自定義補(bǔ)充名的自定義函數(shù),在其中返回的值,不需要assign()方法傳遞,就能直接在模板頁(yè)面中以{insert name='自定義補(bǔ)充名'}的方式調(diào)用,同時(shí)不會(huì)受到緩存的影響,而實(shí)時(shí)刷新。

另外補(bǔ)充的一下是如果你感覺(jué)使用 Smarty 緩存不夠爽的話,還可以使用自定義緩存,如何使用自定義緩存呢?

這里需要設(shè)置cache_handler_func使用自定義的函數(shù)處理緩存,如:
復(fù)制代碼 代碼如下:
$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"://讀取緩存內(nèi)容

case "write"://寫(xiě)入緩存

case "clear"://清空

}

}

php技術(shù)PHP模板引擎Smarty的緩存使用總結(jié),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 羞羞影院男女爽爽影院尤物 | 极品少妇高潮啪啪AV无码吴梦梦 | 色多多污污下载 | 国内九一激情白浆发布 | 免费在线观看a视频 | 久久这里只精品国产99re66 | 国产精品麻豆高潮刺激A片 国产精品麻豆a在线播放 | 亚洲欧美一区二区三区导航 | 亚洲2023无矿砖码砖区 | 伊人久久青草 | 久久免费高清 | 午夜福利体检 | 亚洲日韩天堂在线中文字幕 | 久久久欧美国产精品人妻噜噜 | 四库影院永久国产精品 | 欧美一级久久久久久久大 | 欧美极品尿交 | 国产精品人妻午夜福利 | 拔擦拔擦8X永久华人免费播放器 | 亚洲偷自拍精品视频在线观看 | SM脚奴调教丨踩踏贱奴 | 在线视频 国产 日韩 欧美 | 日日夜夜国产 | bbwvideoa欧美老妇| 国产露脸无码A区久久蘑菇 国产露脸无码A区久久 | 综合精品欧美日韩国产在线 | 午夜视频无码国产在线观看 | 芭乐草莓樱桃丝瓜18岁大全 | 被窝伦理午夜电影网 | 欧美成人亚洲高清在线观看 | 日本调教网站 | jyzzjyzzz视频国产在线观看 | 亚洲精品无码国产爽快A片 亚洲精品无码成人AAA片 | 欧美精品成人一区二区在线观看 | 日日夜夜天天操 | 亚洲综合免费视频 | 久久青草费线频观看国产 | 国产亚洲精品福利视频 | 亚洲欧美自拍清纯中文字幕 | 护士们的母狗 | 午夜福利小视频400 午夜福利网国产A |