中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何下載與配置Smarty

發布時間:2020-12-10 15:04:10 來源:億速云 閱讀:138 作者:Leah 欄目:開發技術

這篇文章給大家介紹如何下載與配置Smarty,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

下載與配置
官方下載:Smarty Download
下載完后,解壓到自己項目的文件目錄下。
 代碼如下:

require('../libs/Smarty.class.php');
$smarty = new Smarty;
//$smarty->force_compile = true; //強迫編譯
$smarty->debugging = true; //調試
$smarty->caching = true; //開啟緩存
$smarty->cache_lifetime = 120; //緩存存活時間(秒)

$smarty->cache_dir = MY_SMARTY_DIR . '/cache/' ; //設置緩存的存放路徑


注意:如果你發現緩存文件每次瀏覽都會發生改變,請看 Smarty的 force_compile , 它會強迫Smarty每次調用(重新)編譯模板。這項設置不受$compile_check的限制。默認情況下,它是無效的。它對于開發和調試很方便.但它決不能使用于產品環境下.如果啟動了緩存,每次將會重新生成緩存文件.

$smarty->force_compile = false; //強迫編譯

Smarty 緩存技術

全局緩存
局部緩存
insert 法
動態 block 法
插件 block 法

全局緩存技術

顧名思義,全局緩存就是把整個頁面生成緩存文件,指定該緩存文件的存活時間,在指定時間內再次瀏覽整個頁面,將直接讀取緩存文件。

代碼如下:
$smarty->caching = true; //開啟緩存
$smarty->cache_lifetime = 120; //緩存存活時間(秒)



注意:一個模板只能有一個緩存文件,如果您的模板存在多個頁面的話,就要為緩存 設置一個ID。 例如一個頁面有多個文章:

http://website/index.php?p=1
http://website/index.php?p=2

復制代碼 代碼如下:

//$_SERVER['REQUEST_URI']方法
//將當前頁面的URL(包含?后面的所有參數)進行md5加密
$url=md5($_SERVER['REQUEST_URI']);
//設置緩存文件名
$smarty->display('index.tpl',$url);



重點:使用緩存技術,很大一個原因就是為了減少對數據庫的讀寫,所以我們要用$smarty->isCached('index.tpl')來判斷緩存是否存在,如果存在了就不要再次操作數據庫。

復制代碼 代碼如下:

if(!$smarty->isCached('index.tpl')){
echo "ACACHE NO FOUND!";
$sql = "SELECT * FROM test";
$query = mysql_query($sql);
$row = mysql_fetch_row($query);
$smarty->assign("loaddatabase",$row[1]);
}


這里又有問題了,如果我改了數據庫的某個內容,想更新顯示內容,但是緩存又還沒到消亡時間,那該腫么辦呢?
$smarty->clearCache("index.tpl");
上面的clearCache可以解決這個問題,只要更新了數據后,調用clearCache清除一下緩存就可以了。

PS:我用的是Smarty3版本,這個版本很多方法的命名都發生變化了,如果是Smarty2的話會出現“Call of unknown method ‘isCached'.”,請使用$smarty->is_cached()。
后面出現的 Smarty3:registerPlugin(), Smarty2:register_block() 也一樣是版本的問題。

下面我們來看一下有緩存和沒緩存的速度比較:
1.首次瀏覽,沒有緩存 Total Time 0.01421

如何下載與配置Smarty

2.第2次瀏覽,有緩存 Total Time 0.00308

如何下載與配置Smarty

這里我的index.php里只有幾行代碼,如果數據量大的話,就有明顯的區別。

局部緩存技術

局部緩存 = 部分緩存, 就是一個頁面的緩存中,并不是全都生成緩存,可以自定義設置某個功能模塊不生成緩存,每次瀏覽都會更新數據;

例如:網頁顯示用戶的狀態、網頁的統計數據、廣告條等,這些數據的更新速度都非常快,不宜緩存,這樣,局部緩存便有用武之地了。

局部緩存有3個方法:

一、insert法

insert 所包含的內容不會被緩存,每次調用該模板都會重新執行該函數.

使用方法:

注意這里的函數名一定要以insert開頭,模板中的name與之對應。

index.php

復制代碼 代碼如下:

//定義一個時間來測試insert與普通assign的差別
$date = date("Y-m-d H:i:s");
$smarty->assign("date", $date);
//insert
function insert_get_current_time($date){
return date("Y-m-d H:i:s");
}


index.tpl

復制代碼 代碼如下:

nocache:{insert name="get_current_time"}
cache: {$date}
[code]
然后看生成的緩存文件:得出結論 insert 每次調用該模板都會重新執行該函數


nocache:<?php echo insert_get_current_time(array (
),$_smarty_tpl);?>

cache: 2012-06-04 15:46:52

復制代碼 代碼如下:


這種方法簡單,但是如果要顯示的內容是一大塊的,就不宜使用了。

二、動態block 法

php中自定義塊
index.php
[code]
//smarty 3
// function declaration
function smarty_block_nocache ($param,$content,$smarty)
{
return $content;
}
// register with smarty
$smarty->registerPlugin("function","nocache", "smarty_block_nocache");


開始有提到過,Smarty3是用registerPlugin , Smarty2則是用register_block

index.tpl

{nocache}{$date}{/nocache}
然后看緩存文件 , 得出結論每次調用該模板都會重新執行$date
[/code]
<?php echo $_smarty_tpl->tpl_vars['date']->value;?>

復制代碼 代碼如下:

三、插件block 法

這個方法和第2個差不多,只是把php中的自定義塊,放到smarty目錄中的plugins文件夾中。

在Smarty/plugins目錄下建一個文件 block.nocache.php 內容如下:


<?php
function smarty_block_nocache($param, $content, $smarty)
{
return $content;
}
?>
[code]
tpl模板中的使用和第二個方法一樣

關于如何下載與配置Smarty就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

二连浩特市| 九台市| 铁力市| 凯里市| 瑞安市| 清原| 铜山县| 茌平县| 察雅县| 罗甸县| 广灵县| 高雄县| 三穗县| 上栗县| 乌审旗| 剑川县| 大竹县| 建昌县| 元谋县| 长兴县| 建水县| 平顺县| 达孜县| 崇明县| 冕宁县| 平泉县| 集贤县| 阳春市| 内江市| 元江| 宣化县| 牡丹江市| 浦县| 株洲县| 绥德县| 略阳县| 高要市| 信宜市| 许昌县| 望奎县| 毕节市|