婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Smarty緩存機制實例詳解【三種緩存方式】

Smarty緩存機制實例詳解【三種緩存方式】

熱門標簽:怎么向銷售公司推銷外呼系統 廣東地市地圖標注 仁和怎么申請400開頭的電話 長春人工外呼系統服務商 哪里辦理400電話 廣州防封卡外呼系統多少錢一個月 江西手機自動外呼防封系統是什么 高德地圖標注家 外呼系統撥打暫時無法接通

本文實例講述了Smarty緩存機制。分享給大家供大家參考,具體如下:

Smarty模板引擎中強大的緩存機制,緩存機制有效減少了系統對服務器的壓力,而這也是很多開發者喜歡Smarty的原因之一,附錄中講解了設置緩存及清除緩存的技巧方法(其中包含緩存集合方法)。

一、Smarty緩存的幾種方式

緩存機制中,分為全局緩存、部分緩存、局部緩存三種方式,后面會一一講述,下面是緩存設置前,Smarty類方法基本目錄設置如下:

$smarty->Smarty();
$smarty->template_dir = $ROOT."/templates";//模板目錄
$smarty->compile_dir = $ROOT."/templates_c";//編譯目錄
$smarty->cache_dir = $ROOT."/cache";//緩存目錄
$smarty->caching = true;//是否開啟緩存,值為0,1,2,0則不開啟:1則開啟緩存:2則可設置特殊緩存,即在加載模板頁前,對局部進行緩存時間的特殊設定,后面會講到;可不寫,默認為true-開啟
$smarty->cache_lifetime = "3600";//緩存時間 ,可不寫,默認為3600
$smarty->compile_check = true;//是否進行編譯,可不寫,默認為true

緩存機制中調用模板生成緩存頁面,用的一個display()方法,將會在后文中用到,這里先講解一下:

$smarty->display(string template[, string cache_id[, string compile_id]]);

第一個必須參數:template,為需顯示的模板;
第二個可選參數:cache_id,可指定一個緩存號,此參數是給頁面緩存添加一個標識的作用;
第三個可選參數:compile_id,可指定一個編譯號 ,此參數是把一個模板編譯成不同版本時使用,同樣是起一個標識的作用,不常用。

上面代碼簡潔、說明易懂吧!若引用創建Smarty類都不知,那下面可以省了,呵,開個玩笑!接著往下看。

1、全局緩存方式

定義:字面上看,意思很明了,就是為整個網站的全部頁面都進行緩存生成,只要頁面調用了Smarty類模板。

代碼實例:其實,在這段之前的基本目錄設置中就講到了,為說明,用藍顏色標明了出來代碼,只要在類中這樣設置,并在頁面中進行如下引用,頁面即進行了緩存,

$smarty->display('index.tpl');

而這條語句,有一個很大的缺陷,就是一個模板即一個模板頁面,只生成一個緩存,而我們知道,大多網站的多數頁面后面會接一些參數或不同頁面調用同一個模板,比如:

http://blog.unvs.cn/archives/2012_9.html
http://blog.unvs.cn/archives/2012_8.html
http://blog.unvs.cn/archives/2012_7.html

比方這些是調用的同一個模板生成的頁面,但是又必須生成3個緩存,使用上面的語句肯定做不到,這里我們要想到一開始講到的第二個可選參數cache_id,用一個緩存號,來區分同一個模板生成不同的頁面及緩存,代碼實例:

$cache_id = $_GET['id'];//url中的id參數值
$smarty->display('index.tpl', $cache_id);//將緩存號加入,即可完成–同一模板–不同參數–不同緩存 的功能;

到這里,有人發現,如果我的頁面不止一個參數,那是不是得全部解析出來并做為緩存號?這里有一個更好的方法,推薦給大家,也是網上大多贊同的。(其實,上面一段是'廢話',可去掉,但為了循序漸進,更好理解而寫的過渡,諒)

推薦的方法是:你可以直接將整個當前URL獲取下來,作為cache_id加入緩存,這樣無論它多少個參數,都不會存在同一個緩存頁,

代碼實例:

$url=$_SERVER['REQUEST_URI'];//獲取當前頁URL,有的將url進行md5加密,亦可
$smarty->display('index.tpl', $url);

2、部分緩存方式

定義:意思就是,網站系統的部分頁面進行緩存,而一些頁面不進行緩存,比方網站的注冊、登錄處理頁面可不進行緩存。

一種處理方式:在display()方法前或后面,將此模板緩存進行一次清除操作,注意保持兩者參數必須一致;

代碼實例:

$smarty->clear_cache("index.tpl");//此句放在display方法句前后都可以
$smarty->display("index.tpl");//與clear_cache方法參數必須一致

另一種處理方式:原理是一樣的,因為部分緩存相當于兩種情況,你可以另寫一個display方法進行重構,其中一個參數判斷是否進行緩存,若不,則進行clear_cache()方法處理,否則進行緩存;

代碼實例:

function display($temp_name, $cache_id = null,$is_cache = true){
if($is_cache){
$smarty->clear_cache("index.tpl", $cache_id);
$smarty->display("index.tpl", $cache_id);//此兩句不解,見上面綠色代碼
}else{
$smarty->display("index.tpl", $cache_id);
}}

調用方法:

self::display($temp_name, $cache_id, false);
//這樣設置即不進行緩存,有任何疑問可留言提出。

3、局部緩存方式

定義:一個頁面,一些地方不進行緩存,保持動態更新,每次都加載,比如文章詳細頁的瀏覽次數、登錄窗口框等。

有幾種可實現局部緩存的方法(反面即處理好不緩存的地方就可實現局部緩存),著重講解1、2種方法,我覺得就可以了,不用學會那么多。

a、使用SMarty引擎中內置的nocache函數,實現不緩存功能(smarty3.1.8版支持,不知smarty2+是否支持)

直接在tpl或html模板頁中,不緩存區域加入{nocache}不緩存內容{/nocache}即可。
代碼實例:

處理頁面:$smarty->assign("time",time());

模板頁面:{nocache}{$time}>{/nocache}

b、注冊塊方法,實現不緩存

寫一個no_cached方法,并調用smarty注冊塊函數將方法進行注冊,即可實現,直接貼實例。

代碼實例:

處理頁面:$smarty->assign("time",time());

function no_cached($param, $content){//參數$param為塊參數數組,參數$content為不緩存內容
return $content;
}
$smarty->register_block("no_cached", "no_cached", false);//注冊塊方法:register_block($tpl_func, $reg_func, $cacheable);//參數1為模板函數;參數2為需注冊的函數即上面寫的函數;參數3為是否進行緩存,這里必須設置為false

模板頁面:{no_cached}{$time}>{/no_cached}

c、當然還有其他一些方法,比如:注冊函數等,這里就不介紹了,其中注冊塊詳細使用,請查看smarty說明書,這里就不詳述了。

4、緩存機制中的is_cached用法

最后,說下is_cached($temp_tpl[, $cache_id])判斷是否已被緩存這個方法,$temp_tpl參數為模板頁,$cache_id參數為緩存號,這個方法主要用在加載模板前進行緩存判斷,若不存在就加載數據,若存在直接跳過,這樣就達到了緩存的最終目的。

示例:

if(!smarty->is_cached('index.tpl')){//不存在緩存
//調用數據庫,并對變量進行賦值
}
$smarty->display('index.tpl');//加載模板頁

以上為Smarty的三種緩存

附:Smarty清除緩存方法

一、普通清除緩存方法

通過如下方法,對Smarty的緩存進行清除:

代碼示例:

$smarty->clear_cache("index.tpl");//清除一個模板的緩存;
$smarty->clear_cache("index.tpl", $cache_Id);//清除一個帶緩存編號的緩存;如:頁面http://www.abc.com/index.asp?act=login,可以將$cache_id設為login;
$smarty->clear_all_cache();//清除所有緩存,即緩存目錄下所有緩存文件;

這樣就存在一個問題,比方網站有一個欄目:http://blog.unvs.cn/archives/php/,我只想清除這一個欄目的頁面緩存而不想全部清除或一個頁面緩存,這種情況經常會碰到,那么,接下來會講到Smarty引擎中強大的緩存集合方法。

二、清除緩存集合方法

Smarty中文教程是這樣描述的:可以通過建立cache_id集合做更詳細的集合體,在cache_id集合里用豎線"|"來分開子集合。可以盡可能多的包含子集合。

上面解釋的有點云里霧里,簡單點說,就是在建立緩存中,將cache_id以一個帶集合標識保存,用豎線隔開集合標識與緩存編號,而不僅僅是單一緩存編號,如:

$smarty->display("index.tpl", "category|".$cache_id);
//前面加了一個 category| 的前綴,表明將把緩存編號為$cache_id保存在category集合里,可以理解為分組;

這里添加一個緩存文件如何命名知識點,緩存文件命名生成規則:集合名稱^_Site目錄_頁面名稱_參數_頁面名稱編碼md5加密

如下圖所示:

(category屬于一個集合,index屬于一個集合)

剛將了集合的生成,下面關鍵如何清除集合下的緩存,方法如下:

$smarty->clear_cache(null, "category");
//注意模板文件參數為null,""都不可以。

以上就完成了集合緩存的生成與清除,其實,網上也有這樣一種方法:給一個欄目新建一個目錄,比方news欄目,緩存生成放到一個news的緩存文件夾,這點不難,然后需要清除此欄目緩存時,緩存路徑指向news即可。這個方法可行,個人覺得靈活性不高。

好了,關于Smarty緩存機制原理的講解就完成了,當然這些只是實際開發常用的應用技巧,還有更多與緩存相關的函數、塊什么的,不過掌握這些,相信Smarty緩存就可以運用自如了。

更多關于Smarty相關內容感興趣的讀者可查看本站專題:《smarty模板入門基礎教程》、《PHP模板技術總結》、《PHP基于pdo操作數據庫技巧總結》、《PHP運算與運算符用法總結》、《PHP網絡編程技巧總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php字符串(string)用法總結》、《php+mysql數據庫操作入門教程》及《php常見數據庫操作技巧匯總》

希望本文所述對大家基于smarty模板的PHP程序設計有所幫助。

您可能感興趣的文章:
  • Smarty模板引擎緩存機制詳解
  • PHP模板引擎Smarty的緩存使用總結
  • Smarty局部緩存的幾種方法簡介
  • Smarty的配置與高級緩存技術分享
  • smarty 緩存控制前的頁面靜態化原理
  • php smarty模版引擎中的緩存應用
  • php smarty模版引擎中的緩存應用
  • smarty緩存用法分析
  • smarty模板局部緩存方法使用示例
  • PHP文件緩存smarty模板應用實例分析
  • Smarty高級應用之緩存操作技巧分析

標簽:黔東 文山 濮陽 廈門 梅河口 惠州 湘西 海北

巨人網絡通訊聲明:本文標題《Smarty緩存機制實例詳解【三種緩存方式】》,本文關鍵詞  Smarty,緩存,機制,實例,詳解,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Smarty緩存機制實例詳解【三種緩存方式】》相關的同類信息!
  • 本頁收集關于Smarty緩存機制實例詳解【三種緩存方式】的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产欧美一区二区精品性色 | 久久成人av少妇免费| 久久久久久亚洲综合影院红桃| 成人av免费在线观看| 美国av一区二区| 亚洲专区一二三| 中文字幕制服丝袜一区二区三区| 欧美一区二区三区免费观看视频 | 久久久不卡网国产精品二区| 日本黄色一区二区| 91亚洲午夜精品久久久久久| 国产 欧美在线| 免费成人性网站| 午夜一区二区三区在线观看| 中文字幕亚洲区| 国产精品传媒入口麻豆| 久久精品亚洲精品国产欧美| 91精品国产91久久综合桃花 | 中文字幕免费不卡| 久久综合九色综合欧美98| 欧美猛男男办公室激情| 欧洲av在线精品| 日本道精品一区二区三区| av中文字幕亚洲| av欧美精品.com| 色综合久久久久综合体 | 精品日韩成人av| 91久久精品一区二区| 一本到不卡免费一区二区| 94-欧美-setu| av欧美精品.com| 欧美在线三级电影| 欧美久久久久久久久| 在线不卡中文字幕| 日韩欧美高清dvd碟片| xvideos.蜜桃一区二区| 555www色欧美视频| 色伊人久久综合中文字幕| 欧美图区在线视频| 日韩精品最新网址| 国产亚洲欧美色| 亚洲精品ww久久久久久p站| 综合久久给合久久狠狠狠97色| 中文字幕一区二区三| 亚洲美女电影在线| 青青草伊人久久| 国产在线不卡一卡二卡三卡四卡| 高清beeg欧美| 91久久精品一区二区| 日韩午夜精品视频| 国产日韩欧美亚洲| 依依成人精品视频| 午夜电影久久久| 国产精品自在欧美一区| 色综合天天综合网天天看片| 欧美亚男人的天堂| 久久精品免视看| 亚洲123区在线观看| 国产成人av电影免费在线观看| 国产激情一区二区三区四区 | 亚洲午夜电影网| 麻豆免费精品视频| 欧美午夜精品一区二区蜜桃 | 亚洲精品一二三| 狠狠久久亚洲欧美| 欧美日韩精品欧美日韩精品一| 国产网站一区二区| 无码av中文一区二区三区桃花岛| 成人小视频在线观看| 欧美日韩高清在线| 视频一区在线播放| 欧美一区二区三区视频在线| 亚洲一卡二卡三卡四卡无卡久久 | 国产一区二区三区视频在线播放| 欧美美女黄视频| 日韩一区欧美二区| 日韩欧美黄色影院| 久久99久久99精品免视看婷婷| 欧美一二三区精品| 免费一级片91| 精品国产自在久精品国产| 青椒成人免费视频| 日韩视频国产视频| 久久国产精品99久久久久久老狼 | 日韩精品欧美精品| 91精品国产综合久久香蕉的特点 | 国产一区二区三区免费看| 精品福利在线导航| 成人综合婷婷国产精品久久| 国产精品嫩草99a| 色婷婷综合久久| 视频一区在线播放| 久久嫩草精品久久久久| 国产成人在线看| 亚洲美腿欧美偷拍| 欧美一区二区三区啪啪| 韩日精品视频一区| 亚洲天堂免费看| 欧美最猛性xxxxx直播| 五月婷婷综合在线| 久久久无码精品亚洲日韩按摩| 成人app在线| 亚洲影视在线观看| 久久天堂av综合合色蜜桃网| gogo大胆日本视频一区| 午夜精品久久久久久久久久| 日韩免费视频一区二区| 成人午夜免费电影| 三级影片在线观看欧美日韩一区二区 | 欧美日韩一区在线观看| 久久成人免费日本黄色| 亚洲国产高清不卡| 91精品国产高清一区二区三区蜜臀 | 在线成人免费观看| 国产成人免费在线视频| 亚洲一级电影视频| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲尤物在线视频观看| 久久夜色精品国产欧美乱极品| 91免费在线视频观看| 麻豆国产精品777777在线| 亚洲日本青草视频在线怡红院| 日韩一区二区三免费高清| 色婷婷综合在线| 成人妖精视频yjsp地址| 另类欧美日韩国产在线| 怡红院av一区二区三区| 国产精品视频一二三| 日韩免费福利电影在线观看| 91麻豆.com| 成人丝袜高跟foot| 国产一区亚洲一区| 日一区二区三区| 亚洲精品高清在线| 国产精品乱码久久久久久| 精品毛片乱码1区2区3区| 欧美日韩激情一区二区三区| 99视频热这里只有精品免费| 极品少妇xxxx偷拍精品少妇| 午夜私人影院久久久久| 亚洲人午夜精品天堂一二香蕉| 久久精品水蜜桃av综合天堂| 日韩一区国产二区欧美三区| 欧美日韩免费观看一区三区| 91免费视频观看| 99久久久无码国产精品| 成人中文字幕合集| 国产精品18久久久久久久久久久久| 青青青伊人色综合久久| 日韩在线一区二区三区| 亚洲成人激情综合网| 亚洲电影在线播放| 亚洲国产成人高清精品| 午夜免费久久看| 日本不卡视频在线观看| 美女视频黄a大片欧美| 日韩二区三区四区| 精品一区二区免费| 国产精品亚洲一区二区三区妖精 | 91女厕偷拍女厕偷拍高清| 99re8在线精品视频免费播放| av在线播放一区二区三区| av电影在线观看完整版一区二区 | 亚洲成a人v欧美综合天堂| 亚洲国产成人精品视频| 日本一区中文字幕| 久久精品国产99国产精品| 国产真实精品久久二三区| 国产·精品毛片| 91蜜桃婷婷狠狠久久综合9色| 91久久国产最好的精华液| 欧美日韩不卡一区二区| 精品国产一区二区在线观看| 中文字幕av一区二区三区免费看 | 日韩电影在线免费观看| 国内精品国产成人国产三级粉色 | 91同城在线观看| 欧美曰成人黄网| 精品国产免费视频| 亚洲欧美日韩电影| 裸体在线国模精品偷拍| 成人免费黄色在线| 欧美天堂一区二区三区| 26uuu另类欧美亚洲曰本| 亚洲人亚洲人成电影网站色| 视频在线观看一区二区三区| 国产精品综合网| 欧美丝袜丝交足nylons图片| 精品少妇一区二区三区免费观看| 国产精品乱码人人做人人爱 | 日韩中文字幕亚洲一区二区va在线| 毛片av一区二区三区| 92国产精品观看| 久久久久久久久一| 亚洲国产成人精品视频| 成人免费高清视频在线观看| 欧美男生操女生| 亚洲精品乱码久久久久久久久| 日本成人中文字幕| 欧洲av一区二区嗯嗯嗯啊|