Smarty缓存是如何工作的?它如何知道何时进行缓存?

4
什么决定Smarty是否有足够的缓存还是需要重新创建? $_REQUEST可以吗?还是包括cookie、session等所有全局变量... index.php和index.php?task=home有相同的缓存吗?cookie和session信息呢? 它是如何工作的?我有一个网站,我想将其缓存到最大潜力,但我甚至不知道缓存是如何工作的,而他们在Smarty网站上也没有解释内部机制。
回答Rodney的问题可能有助于理解我的问题: 我想知道Smarty是否将动态代码转换为静态HTML,例如:smarty.net/docs/en/language.function.nocache.tpl,如果是这样,它何时以及如何决定缓存好坏。所以如果我有Hello {$user->username}!会显示Hello Rodney To Brad,因为它在Brad查看页面时缓存了它吗?

1
Neo,我为我的错误答案道歉。每天学点新东西!我已将其删除。 - Brad
1个回答

3

请查看Caching的文档。

如果无法找到缓存或者缓存已过期,Smarty会重新执行模板。 $cache_id是用户传递给Smarty的值,用于为$cache_id特定保存缓存。

更新

控制输出缓存能力部分中,解释了Smarty如何处理静态缓存中的动态内容。该页面回答了您关于“Rodney”和“Brad”是如何注入到模板的缓存呈现中的问题。


这个回答如何解决我的问题?我已经阅读了这个页面。我想知道Smarty是否会将动态代码转换为静态HTML,就像在smarty.net/docs/en/language.function.nocache.tpl中一样,并且它是如何决定缓存是好还是坏的。所以如果我有Hello {$user->username}!它会显示Hello Rodney To Brad,因为它在Brad查看页面时缓存了它吗? - Neo
Smarty 不会从您传递的内容中推断任何缓存有效性。Smarty 只会检查输出缓存文件(在 $cache_dir 中)的修改时间、编译模板(在 $compile_dir 中)的修改时间和源模板(在 $template_dir 中)的修改时间。 - rodneyrehm
谢谢,这非常有帮助。我想我在编程时只需要记住缓存问题。我正在考虑使用可以使页面不同的所有变量,并将它们创建为哈希,然后将其用作$cache_id。看起来对于Smarty而言,index.php?page=home和index.php?page=admin是相同的东西? - Neo
1
为每个用户缓存一个特定的内容是一个非常糟糕的想法。首先,必须为每个用户生成缓存(那么为什么要缓存呢?)- 然后您在磁盘上有$numberOfResources * $numberOfUser个缓存文件? - rodneyrehm
1
缓存不同用户之间相同的内容,并将与用户相关的内容标记为{nocache}。这样,每个资源只有一个缓存... - rodneyrehm
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接