p_id int php
p_title varchar html
p_addtime int 數據庫
fenye.php fenye.html 數組
效果: 緩存
常量 服務器
變量 app
經常使用方法 框架
緩存控制技術 數據庫設計
SMARTY_DIR 函數
$template_dir :模板路徑
$compile_dir :編譯目錄
$config_dir :配置文件目錄
$cache_dir :緩存目錄
$left_delimiter :左分界符
$right_delimiter :右分界符
$caching :緩存開關,Boolean類型,true和false,默認false
$cache_lifetime :緩存週期,默認狀況3600秒 1個小時
$debugging :調試開關,Boolean類型,默認爲false
$php_handling :Smarty3.0中已基本無效,默認整型
示例代碼:
assign :分配變量到模板文件(值傳遞)
assignByRef :分配變量到模板文件(引用傳遞)
append :以數組的形式分配變量到模板(值傳遞)
appendByRef :以數組的形式分配變量到模板(引用傳遞)
clearAllAssign :清除全部賦值操做
clearAssign :清除指定賦值操做
clearCache :清除緩存
configLoad :加載配置文件
clearConfig :清除配置信息
display :顯示輸出模板文件
fetch :載入文件到字符串
templateExists :判斷模板文件是否存在
示例代碼:
例1:assign與assignByRef的區別
例2:append方法
運行效果:
例3:clearAssign與clearAllAssign
例4:configLoad加載配置文件
例5:fetch方法
功能:載入文件到字符串
靜態化技術
www.baidu.com/index.php?id=11
效果:
例6:templateExists判斷模板是否存在‘
示例代碼:
編譯 < 緩存 < 靜態化
默認是關閉,若是要使用,請開啓Smarty緩存開關caching
示例代碼:
運行效果:
1)加快網站的訪問速度
2)減小服務器的壓力
3)減小數據庫服務器的壓力你
答:編譯文件
基本語法
$smarty->isCached(「tpl.tpl」)
功能:用於檢測模板是否擁有緩存
例1:經過smarty讀取數據庫中的一條記錄
例2:經過緩存技術減小對數據庫的讀取
$smarty->clearCache(「tpl.tpl」)
清除指定頁面的緩存
$smarty->clearAllCache()
清除全部頁面緩存(cms系統後臺的清楚緩存按鈕)
經過clearCache能夠清楚指定頁面的緩存,咱們一般用於單頁面處理
公司簡介 ----------------------------------- 更新頁面
而咱們的clearAllCache一般用於清除全部緩存,經過用於整個系統中
例如ecshop右上角的清除緩存按鈕,dedecms更新緩存
www.shop.com/show.php?id=1 讀取id爲1的產品內容
經過實驗可知,只有第一次訪問時,系統能夠正常讀取,之後每次訪問時,系統自動轉向第一次請求的緩存頁面,不管參數如何變化
如何解決?
答:經過單頁面多緩存
基本語法:
$smarty->display(「tpl」, 「惟一值」)
實例代碼:
該功能主要用於詳細內容頁。
問題:以上問題,若是有多個參數
答:能夠經過緩存集合的方式來解決以上問題
示例代碼:
以上代碼主要應用於分類頁或列表頁
在項目中,可能有些功能或模塊並不須要進行緩存(如點擊次數、評論),如何解決呢?
$smarty->assign(「var」, 「value」, true) :當前變量不緩存(PHP入口)
{$var nocache=true} :當前變量不緩存(模板頁)
{nocache}{/nocache} :某個區塊不緩存(模板頁)
示例代碼:
例1:
例2:
例3:區域緩存
tpl源文件 =〉Prefilter =〉編譯tpl文件 => Postfilter =>保存到磁盤=> 編譯過的php文件執行=〉Output Filters(=〉若是有smarty cache的話,Output Filters的內容會緩存) =>結果輸出。
Prefilter:前置(預)過濾器(標籤替換成動態代碼發生的)
Postfilter:後過濾器(編譯文件保存到硬盤時發生的)
OutputFilter:在請求轉發回用戶時觸發此過程
在Smarty3.0中使用如下方式建立過濾器
$smarty->registerFilter($type, $callback)
$type:定義過濾器的類型
pre 預過濾器
post 後過濾器
output 輸出過濾器
$callback:自定義函數
1)在Core中建立Tools文件夾用於保存第三方框架文件
2)複製smarty到Core中Tools文件夾
3)在View.class.php核心視圖類中引用Smarty入口文件
4)在Action.class.php核心控制器中建立以下語句
public function __constructor() {
$this->view = new View();
$this->view->setTemplateDir(‘模板存放路徑’);
}
5)之後就能夠在全部控制器中使用$this->view->assign()與$this->view->display()方法