我有一个扩展名为.php的模板。 这个模板包含html maarkup以及一些php变量。这就是它的样子。
include_once VIEWDIR . 'documentation/common/header.php';
include_once VIEWDIR . 'documentation/content/'.$this->view.'.php';
include_once VIEWDIR . 'documentation/common/leftsidebar.php';
include_once VIEWDIR . 'documentation/common/rightsidebar.php';
这是我缓存的方式。
ob_start();
include_once('template.php');
$templateCache = ob_get_clean();
然后我将它存储在.cache文件中。
问题是当我从缓存加载模板时,它无法读取php变量。
我知道我做错了但却无法抓住它。请帮忙。
答案 0 :(得分:1)
根据定义,缓存会缓存各个变量的值。
您要做的是在模板中使用的其中一个变量更改其值时删除缓存。
这样,缓存将使用新值重新生成,并且您将拥有两个世界的优势:
免责声明:这并不一定会将您的问题用作展示。如果您需要一个更为重要的答案,您应该改进您的问题。
如果您的模板有一些经常更改的区域,而另一些区域没有更改,那么您应该仅单独缓存那些不经常更改的部分,并将包含未更改变量的整个模板保留为整体。< / p>
不要忘记按上述方法处理单个缓存,以使系统具有正确的行为。
因此,不是缓存整个文件,而是将其重写为:
echo $cache->get(VIEWDIR . 'documentation/common/header.php');//<-- this is a cache
include_once VIEWDIR . 'documentation/content/'.$this->view.'.php');
echo $cache->get(VIEWDIR . 'documentation/common/leftsidebar.php');//<-- this is a cache
echo $cache->get(VIEWDIR . 'documentation/common/rightsidebar.php');//<-- this is a cache
并且您将模板的各个部分视为缓存本身。
答案 1 :(得分:1)
只是不要缓存它们 你的“缓存”方式根本不是缓存,但这不是主要问题 问题是我怀疑你有任何理由缓存你的模板或他们的输出。
所以,只要保持原样,不要“缓存”。