codecamp

Smarty缓存组

缓存组

你可以通过设置$cache_id更精细地组织你的缓存。 在$cache_id值中使用竖线|来设置缓存组, 同时你可以根据需要设置多个缓存组。

  • 你可以把缓存组理解成目录层次结构。 比如缓存组'a|b|c'可以理解成目录结构'/a/b/c/'

  • clearCache(null,'a|b|c')相等于删除文件 '/a/b/c/*'clearCache(null,'a|b')相等于删除文件 '/a/b/*'

  • 如果你按照clearCache(null,'a|b','foo')的方式来设置 $compile_id, 那么它将自动附带一个$compile_id 的缓存组。

  • 如果你按照clearCache('foo.tpl','a|b|c')的方式来设置模板名称, 然后Smarty将试图删除'/a/b/c/foo.tpl'

  • 因为缓存组是“从左到右”顺序删除缓存的,所以你不能单独删除某个缓存如'/a/b/*/foo.tpl'。 你可以另外再设置一个缓存组来达到此目的。

不能混淆缓存组和模板目录结构,缓存组与你的模板层次结构是无关的。 比如说,你有一个模板文件themes/blue/index.tpl, 然后你想删除全部带blue的主题(theme), 这样你可以参考模板目录结构来创建一个缓存组,如display('themes/blue/index.tpl','themes|blue'), 之后你可以通过clearCache(null,'themes|blue')来删除它们。

Example 15.9. $cache_id 组

<?php
require('Smarty.class.php');
$smarty = new Smarty;

$smarty->setCaching(Smarty::CACHING_LIFETIME_CURRENT);

// 删除全部'sports|basketball'的缓存
$smarty->clearCache(null,'sports|basketball');

// 删除全部"sports"下的缓存,这里包括了
// "sports|basketball", 或者 "sports|(anything)|(anything)|(anything)|..."等等
$smarty->clearCache(null,'sports');

// 删除"sports|basketball"下的foo.tpl缓存文件
$smarty->clearCache('foo.tpl','sports|basketball');

$smarty->display('index.tpl','sports|basketball');
?>
Smarty单页多个缓存
Smarty控制输出缓存
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

I.Smarty基础

1.Smart是什么?

II.Smarty模板设计师篇

6.Smarty复合修饰器

9.Smarty配置文件

10.Smarty调试控制台

III. 程序开发者篇

11. Smarty字符集编码

12.Smarty常量

13.Smarty成员变量

14.Smarty成员方法

17.Smarty高级特性

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }