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

首頁 > 語言 > PHP > 正文

Smarty高級應用之緩存操作技巧分析

2024-05-04 23:45:57
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了Smarty高級應用之緩存操作技巧,結合實例形式分析了Smarty緩存使用的相關技巧與注意事項,需要的朋友可以參考下
 

本文實例講述了Smarty高級應用之緩存操作技巧。分享給大家供大家參考,具體如下:

smarty緩存控制

smarty提供了強大的緩存功能。但有時我們并不希望整篇文檔都被緩存,而是有選擇的緩存某一部分內容或某一部分內容不被緩存。例如你在頁面上端使用一個帶有廣告條位置的模板,廣告條可以包含任何HTML、圖象、FLASH等混合信息. 因此這里不能使用一個靜態的鏈接,同時我們也不希望該廣告條被緩存. 這就需要在 insert 函數指定,同時需要一個函數取廣告條的內容信息。smarty也提供了這種緩存控制能力。

我們可以使用{insert}使模板的一部分不被緩存

可以使用$smarty->register_function($params,&$smarty)阻止插件從緩存中輸出,

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

下面我們真對一個簡單需求,分別說明這三種控制緩存輸出的方法。

需求:被緩存的文檔中當前時間不被緩存,隨每次刷新而變化。

1、使用insert函數使模板的一部分不被緩存

index.tpl:

<div>{insert name="get_current_time"}</div>

index.php

function insert_get_current_time(){  return date("Y-m-d H:m:s");}$smarty=new smarty();$smarty->caching = true;if(!$smarty->is_cached()){  .......}$smarty->display('index.tpl');

注解:

定義一個函數,函數名格式為:

inser_name(array $params, object &$smarty),

函數參數可選的,如果在模板的insert方法中需要加入其他屬性,就會作為數組傳遞給用戶定義的函數。

如:

{insert name='get_current_time' local='zh'}

在get_current_time函數中我們就可以通過$params['local']來獲得屬性值。

如果在get_current_time函數中需要用到當前smarty對象的方法或屬性,就可以通過第二個參數獲得。

這時你會發現index.tpl已被緩存,但當前時間卻隨每次刷新在不斷變化。

2、使用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}

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

3、使用register_block使整篇頁面中的某一塊不被緩存

index.tpl:

<div align='center'>Page created: {"0"|date_format:"%D %H:%M:%S"}{dynamic}Now is: {"0"|date_format:"%D %H:%M:%S"}... do other stuff ...{/dynamic}</div>

index.php:

function smarty_block_dynamic($param, $content, &$smarty) {return $content;}$smarty = new Smarty;$smarty->caching = true;$smarty->register_block('dynamic', 'smarty_block_dynamic', false);if(!$smarty->is_cached()){  .......}$smarty->display('index.tpl');

注解:

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

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

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

4、總結

(1)對緩存的控制能力:

使用register_function和register_block能夠方便的控制插件輸出的緩沖能力,可以通過第三個參數控制是否緩存,默認是緩存的,需要我們顯示設置為false,正如我們試驗中的所做的那樣

復制代碼代碼如下:
$smarty->register_function('current_time','smarty_function_current_time',false);

但insert函數默認是不緩存的。并且這個屬性不能修改。從這個意義上講insert函數對緩存的控制能力似乎不如register_function和register_block強。

 

(2)使用方便性:

但是insert函數使用非常方便。不用顯示注冊,只要在當前請求過程中包含這個函數smarty就會自動在當前請求的過程中查找指定的函數。

當然register_function也可以做到不在運行時顯示注冊。但是那樣做的效果跟其他模版函數一樣,統統被緩存,并且不能控制。

如果你使用在運行時顯示調用register_function注冊自定義函數,那么一定要在調用is_cached()方法前完成函數的注冊工作。

否則在is_cached()這一步緩存文檔將因為找不到注冊函數而導致smarty錯誤

Smarty用戶自定義函數實例

<?php$smarty->register_function('date_now', 'print_current_date');function print_current_date($params, &$smarty){ if(empty($params['format'])) {  $format = "%b %e, %Y"; } else {  $format = $params['format']; } return strftime($format,time());}?>

在模板中使用

{date_now}{* or to format differently *}{date_now format="%Y/%m/%d"}
 


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

圖片精選

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
57pao成人永久免费视频| 日本久久亚洲电影| 疯狂蹂躏欧美一区二区精品| 日韩小视频在线观看| 国产欧美一区二区三区久久| 在线播放日韩av| 久久久久久久久国产精品| 青草青草久热精品视频在线网站| 国产成人精品视| 97在线观看免费高清| 久久视频在线直播| 欧美一区二区三区四区在线| 亚洲免费精彩视频| 国内精品免费午夜毛片| 日韩av观看网址| 日韩女优人人人人射在线视频| 国产精品网站视频| 91免费高清视频| 亚洲一二在线观看| 91精品视频在线播放| 欧美亚洲成人精品| 亚洲色图第三页| 欧洲成人在线观看| 精品国产精品自拍| 欧美日韩亚洲国产一区| 欧美刺激性大交免费视频| 国产精品美女免费| 亚洲精品日韩av| 国产精品久久久久久久久久久久| 亚洲自拍偷拍一区| 欧美精品videos性欧美| 97超碰国产精品女人人人爽| 欧美黄色性视频| 欧美日韩第一视频| 亚洲精品成人久久| 国产精品欧美一区二区| 国产高清在线不卡| 欧美精品手机在线| 中文字幕一区二区三区电影| 日韩欧美亚洲成人| 欧美精品在线第一页| 亚洲欧美日韩一区二区三区在线| 欧美性生活大片免费观看网址| 国产一区二区丝袜| 91最新国产视频| 最新69国产成人精品视频免费| 色视频www在线播放国产成人| 韩曰欧美视频免费观看| 亚洲bt天天射| 欧美精品videofree1080p| 姬川优奈aav一区二区| 国产91九色视频| 欧美富婆性猛交| 国产精品吹潮在线观看| 久久青草精品视频免费观看| 4438全国成人免费| 欧美第一淫aaasss性| 韩日欧美一区二区| 欧美午夜丰满在线18影院| 亚洲人成在线播放| 欧洲s码亚洲m码精品一区| 日韩av免费在线看| 日韩中文在线观看| 亚洲成人三级在线| 色偷偷av亚洲男人的天堂| 日韩在线视频二区| 国产精品老女人视频| 欧美激情第一页xxx| 日韩av在线天堂网| 亚洲综合精品一区二区| 一本一道久久a久久精品逆3p| 国产成人精品a视频一区www| 欧美超级免费视 在线| 欧美与黑人午夜性猛交久久久| 97精品伊人久久久大香线蕉| 亚洲一区二区久久| 国产精品人成电影在线观看| 日韩二区三区在线| 久久精品成人欧美大片| 中文字幕成人精品久久不卡| 成人性教育视频在线观看| 丝袜亚洲另类欧美重口| 国产精品视频免费在线观看| 国内揄拍国内精品| 高清欧美性猛交xxxx黑人猛交| 日韩国产高清视频在线| 国产精品高清在线| 欧美性猛交xxxxx水多| 操日韩av在线电影| 欧美日韩不卡合集视频| 亚洲天堂第一页| 国产精品综合久久久| 日韩免费黄色av| 国产v综合ⅴ日韩v欧美大片| 日韩精品电影网| 亚洲自拍偷拍色图| 精品亚洲一区二区三区四区五区| 欧美性猛交xxxx乱大交蜜桃| 北条麻妃在线一区二区| 久久成人18免费网站| 91国偷自产一区二区三区的观看方式| 欧美巨大黑人极品精男| 欧美最猛性xxxxx免费| 热99精品只有里视频精品| 精品国产依人香蕉在线精品| 亚洲国产精品国自产拍av秋霞| 亚洲精品自拍第一页| 国产精品羞羞答答| 亚洲国产毛片完整版| 色无极亚洲影院| 国产亚洲成av人片在线观看桃| 欧美性感美女h网站在线观看免费| 亚洲第一精品夜夜躁人人爽| 九九热这里只有在线精品视| 亚洲最大的免费| 欧美日韩裸体免费视频| 日本久久久久亚洲中字幕| 精品国产自在精品国产浪潮| 久久久视频精品| 精品久久久久久中文字幕| 亚洲天堂成人在线视频| 国产精品日韩在线观看| 欧美激情xxxx性bbbb| 国产精品成人免费电影| 欧美亚洲视频一区二区| 国产成人精品久久二区二区91| 欧美最顶级的aⅴ艳星| 亚洲一区制服诱惑| 国产精品丝袜视频| 久久激情五月丁香伊人| 亚洲最大成人免费视频| 久久久久久久999| 国产日韩欧美日韩| 国产精品一区二区三区成人| 欧美国产亚洲视频| 亚洲tv在线观看| 亚洲精品国产美女| 狠狠躁夜夜躁久久躁别揉| 欧美激情在线狂野欧美精品| 欧美中文在线视频| 久久视频在线视频| 欧美日韩成人免费| 欧洲精品久久久| 久久精品国产亚洲| 97av在线影院| 在线观看欧美日韩| 亚洲人成电影网站色xx| 一区二区三区国产视频| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲成人激情小说| 91超碰caoporn97人人| 亚洲在线视频观看| 色综合色综合久久综合频道88| 91精品国产91| 亚洲精品mp4| 欧美xxxwww| 日韩久久免费电影| 成人网址在线观看| 欧美日韩国产中字| 中文字幕日韩欧美在线视频| 亚洲欧美国产一区二区三区| 97香蕉久久超级碰碰高清版| 久久久www成人免费精品张筱雨| 亚洲欧美国产一本综合首页|