亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 語言 > PHP > 正文

Smarty模板引擎緩存機制詳解

2024-05-04 23:46:36
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Smarty模板引擎緩存機制,結合實例形式分析了Smarty模板引擎緩存機制的原理,開啟與使用方法以及相關注意事項,需要的朋友可以參考下
 

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

首先說下smarty緩存和編譯,這是兩個不同的概念,編譯默認情況下是啟動的,而緩存機制需要人為開啟,smarty編譯過的文件還是php文件,所以執行的時候還是編譯的,如果涉及到數據庫,還是要訪問數據庫的所以開銷也不小啦,所以需要smarty緩存來解決!

1.開啟全局緩存

$smarty->cache_dir = "/caches/"; //緩存目錄$smarty->caching = true; //開啟緩存,為flase的時侯緩存無效$smarty->cache_lifetime = 3600; //緩存時間

2.一個頁面使用多個緩存

如:一個文章模板頁面會生成多個文章頁面,當然是緩存成很多頁面,實現起來很簡單,只要在display()方法設置第二個參數,指定唯一標識符即可。如下php代碼:

$smarty->display('index.tpl',$_GET["article_id"]);

如上,通過第二個參數文章的id緩存一個文章頁面。

3.為緩存減小開銷

也就是說,已經緩存的頁面無需進行數據庫的操作處理了,可通過is_cached()方法判斷!

if(!$smarty->is_cached('index.tpl')){ //調用數據庫}$smarty->display('index.tpl');

4.清除緩存

一般在開發過程中是不開啟緩存的,因為在緩存時間內輸出結果不變,但是在應用過程中開啟緩存能大大提高web性能,清除緩存方法如下:

clear_all_cache();//清除所有緩存clear_cache('index.tpl');//清除index.tpl的緩存clear_cache('index.tpl',cache_id);//清除指定id的緩存

5.關閉局部緩存

如果一個頁面中一部分緩存,而另一部分不需要緩存,就可以這樣做,比如說顯示用戶登錄的名稱就需要關閉緩存,smarty提供了如下三種解決方法:

(1)使用insert模板的一部分不被緩存

定義一個inser標簽要使用的處理函數,函數名格式為:insert_xx(array $params, object &$smarty)其中的xx是insert的name,也就是說,如果你定義的函數為insert_abc,則模板中使用方法為{insert name=abc}

參數通過$params傳入

也可以做成insert插件,文件名命名為:insert.xx.php,函數命名為:smarty_insert_aa($params,&$smarty),xx定義同上

(2)$smarty->register_block($params, &$smarty)使整篇頁面中的某一塊不被緩存

定義一個block:

smarty_block_name($params,$content, &$smarty){return $content;} //name表示區域名

注冊block:

$smarty->register_block(name, smarty_block_name, false);//第三參數false表示該區域不被緩存

模板寫法:

{name}內容 {/name}

寫成block插件:

第一步:定義一件插件函數:block.cacheless.php,放在smarty的 plugins目錄

block.cacheless.php的內容如下:

<?phpfunction smarty_block_cacheless($param, $content, &$smarty) {return $content;}?>

第二步:編寫程序及模板

示例程序:testCacheLess.php

<?phpinclude(Smarty.class.php);$smarty = new Smarty;$smarty->caching=true;$smarty->cache_lifetime = 6;$smarty->display(cache.tpl);?>

所用的模板:cache.tpl

已經緩存的:{$smarty.now}<br>{cacheless}沒有緩存的:{$smarty.now}{/cacheless}

現在運行一下,發現是不起作用的,兩行內容都被緩存了

第三步:改寫Smarty_Compiler.class.php(注:該文件很重要,請先備份,以在必要時恢復)

查找:

復制代碼代碼如下:
$this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);

 

修改成:

if($tag_command == cacheless) $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, false);else $this->_plugins[block][$tag_command] = array($plugin_func, null, null, null, true);

你也可以直接將原句的最后一個參數改成false,即關閉默認緩存。

(3)使用register_function阻止插件從緩存中輸出

index.tpl:

<div>{current_time}{/div}index.php:function smarty_function_current_time($params, &$smarty){  return date("Y-m-d H:m:s");}$smarty=new smarty();$smarty->caching = true;$smarty->register_function('current_time','smarty_function_current_time',false);if(!$smarty->is_cached()){  .......}$smarty->display('index.tpl');

注解:

定義一個函數,函數名格式為:smarty_type_name($params, &$smarty)
type為function

name為用戶自定義標簽名稱,在這里是{current_time}

兩個參數是必須的,即使在函數中沒有使用也要寫上。兩個參數的功能同上。



注:相關教程知識閱讀請移步到PHP教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产日韩在线视频| 亚洲精品久久久久| 亚洲xxxx做受欧美| 98午夜经典影视| 91九色精品视频| 97国产精品视频人人做人人爱| 最新中文字幕亚洲| 国产精品黄视频| www.日本久久久久com.| 国产美女精品视频| 欧美激情喷水视频| 欧美xxxx14xxxxx性爽| 国产成人精品日本亚洲专区61| 欧美精品少妇videofree| 国产91精品青草社区| 38少妇精品导航| 国产精品免费一区二区三区都可以| 国产suv精品一区二区三区88区| 国产精品久久久久福利| 亚洲欧美资源在线| 日本一区二区三区四区视频| 国产xxx69麻豆国语对白| 91在线看www| 欧美大片欧美激情性色a∨久久| 在线观看国产精品淫| 欧美电影免费观看网站| 亚洲精品久久7777777| 国产精品久久久久久久一区探花| 啊v视频在线一区二区三区| 欧美性猛交xxxx久久久| 日韩精品视频在线| 久久精品久久精品亚洲人| xx视频.9999.com| 日韩av综合网站| 日韩经典第一页| 欧美激情在线播放| 国产日产久久高清欧美一区| 欧美极品欧美精品欧美视频| 国产精品自拍小视频| 日韩小视频在线| 中文字幕视频一区二区在线有码| 国产精品极品尤物在线观看| 精品综合久久久久久97| 青青草99啪国产免费| 秋霞av国产精品一区| 亚洲精品网站在线播放gif| 久久69精品久久久久久久电影好| 亚洲综合国产精品| 菠萝蜜影院一区二区免费| 欧美国产高跟鞋裸体秀xxxhd| 亚洲国产高清自拍| 粗暴蹂躏中文一区二区三区| 欧美体内谢she精2性欧美| 不卡在线观看电视剧完整版| 成人国产精品色哟哟| 欧美激情一区二区三级高清视频| 欧美视频在线观看免费网址| 亚洲成人动漫在线播放| 精品久久久国产精品999| 热久久99这里有精品| 精品色蜜蜜精品视频在线观看| 日韩欧美精品在线观看| 欧美久久久精品| 国产精品青青在线观看爽香蕉| 中文字幕日韩在线观看| 久久在线免费视频| 日韩亚洲欧美成人| 疯狂欧美牲乱大交777| 亚洲日韩中文字幕| 欧美国产日韩xxxxx| 国产精品一区二区久久国产| 亚洲成人精品视频| 午夜欧美大片免费观看| 亚洲精品国产品国语在线| 日韩一区二区三区在线播放| 97视频在线观看播放| 91免费国产网站| 日韩亚洲国产中文字幕| 久久视频免费观看| 91久久国产婷婷一区二区| 久久99精品久久久久久青青91| 一区二区欧美日韩视频| 最近2019年好看中文字幕视频| 日韩中文字幕免费看| 欧美激情奇米色| 亚洲经典中文字幕| 日韩美女在线观看一区| 日韩在线视频观看正片免费网站| 午夜精品一区二区三区av| 伦伦影院午夜日韩欧美限制| 55夜色66夜色国产精品视频| 日韩国产精品亚洲а∨天堂免| 久久手机精品视频| 亚洲精品理论电影| 欧美日韩国产在线播放| 欧美激情视频一区二区| 91视频国产精品| 亚洲最大福利视频| 国产精品一二区| 日韩精品亚洲元码| 欧美一级片在线播放| 亚洲精品国产综合区久久久久久久| 中文字幕视频在线免费欧美日韩综合在线看| 在线视频精品一| 国产精品麻豆va在线播放| 国产一区二区三区视频| 亚洲激情视频在线播放| 最近2019中文字幕第三页视频| 久久人91精品久久久久久不卡| 国产精品久久久久久久天堂| 国内精品400部情侣激情| 国产精品电影在线观看| 亚洲一区二区三区sesese| 91夜夜未满十八勿入爽爽影院| 北条麻妃99精品青青久久| 中文字幕视频在线免费欧美日韩综合在线看| xxxxx成人.com| 亚洲日本成人网| 亚洲国产女人aaa毛片在线| 欧美中文字幕在线| 日韩成人激情影院| 久久久视频免费观看| 91精品久久久久久久久久入口| 精品亚洲国产成av人片传媒| 奇门遁甲1982国语版免费观看高清| 欧美日韩国产激情| 色狠狠av一区二区三区香蕉蜜桃| 91亚洲精品久久久久久久久久久久| 成人福利在线观看| 亚洲国产福利在线| 久久精品国产一区二区电影| 一区二区三区亚洲| 日韩av在线免费观看| 中文字幕一区二区精品| 久久久久久国产| 丝袜美腿精品国产二区| 亚洲欧美日韩高清| 亚洲欧美国内爽妇网| 欧美孕妇孕交黑巨大网站| 中文字幕日韩免费视频| 色琪琪综合男人的天堂aⅴ视频| 91精品久久久久久久久中文字幕| 伊人激情综合网| 久热精品视频在线| 国产精品久久久久久久久久三级| 中文字幕精品一区久久久久| 国产97人人超碰caoprom| 成人福利视频网| 成人免费xxxxx在线观看| 欧美视频中文字幕在线| 亚洲激情电影中文字幕| 91精品久久久久久久久久久| 亚洲最大福利网| 97国产精品免费视频| 欧美野外猛男的大粗鳮| 美女国内精品自产拍在线播放| 亚洲国产成人久久综合一区| 亚洲精品久久久久久久久久久| 欧美成人免费大片| 国产欧美一区二区三区视频| 中文国产成人精品| 中文字幕欧美在线| 91欧美精品午夜性色福利在线| 久久理论片午夜琪琪电影网|