如何使用Smarty模板(PHP)缓存页面的一部分?

时间:2009-08-20 16:30:01

标签: php caching smarty

除了内容的一小部分(真正动态)外,如何在Smarty模板页面上缓存所有内容?

4 个答案:

答案 0 :(得分:1)

建立在 Zed 的答案上 - 如果您的“动态”内容具有有限数量的排列,为这些排列构建单独的模板,并基于某些变量fetch()它们。类似的东西:

<html>
<body>
<p>Common content would go here with other Smarty {$variables}.</p>

<p>You could then fetch other content using
{if $var1 eq 'foo'}
    {fetch file='/path/to/foo.tpl'}
{elseif $var1 eq 'bar'}
    {fetch file='/path/to/bar.tpl'}
{/if}
</body>
</html>

如果确实不希望缓存包含的文件,则必须设置某种排除逻辑,以确保不缓存这些子模板。

但是,如果您有无限数量的潜在动态选项,则可能只需在PHP代码中构建HTML并将其作为视图变量传递给Smarty。

答案 1 :(得分:1)

{nocache}用于禁用模板部分的缓存。每个{nocache}必须与匹配的{/ nocache}配对。

示例:

<html>    
<body>

<p>Some code, it will be cached</p>
{nocache}
<p>It won't be cached</p>
{/nocache}

</body>
</html>

答案 2 :(得分:0)

您可以将要缓存的一方放入单独的模板中,并使用另一个模板中的fetch()获取其内容。

答案 3 :(得分:0)

您可以使用Smarty的插入功能。

http://www.smarty.net/manual/en/language.function.insert.php

您构建一个被调用的函数,并在页面中插入动态内容。例如,适用于购物车。