0

I have a template which is of .php extension. This template contains the html maarkup along with some php variables. This is how it looks like.

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';

This is the way i am caching.

ob_start();
include_once('template.php');
$templateCache = ob_get_clean();

Then i store this in a .cache file.

The problem is when i load the template from cache, it is not able to read the php variables.

I know i am doing something wrong but not able to catch it. Please help.

4

2 回答 2

1

一般缓存

缓存,根据定义,缓存各个变量的值。

您要做的是在模板中使用的变量之一更改其值时删除缓存。

这样,缓存将使用新值重新生成,您将拥有两全其美的优势:

  • 一方面,当缓存命中时,HTTP 响应速度更快
  • 另一方面,页面的动态性,当某些值发生变化时

在你的情况下缓存

免责声明:这不一定将您的问题用作展示。如果您需要更中肯的答案,您应该改进您的问题

如果您的模板有一些经常更改的区域,而另一些则没有,那么您应该只缓存那些不经常更改的部分,并将包含更改变量的整个模板作为一个整体保持不缓存。

不要忘记按上述方式处理各个缓存,以使系统具有适当的行为。

因此,不是缓存整个文件,而是将其重写为:

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

并且您将模板的各个部分视为缓存本身。

于 2012-12-22T10:50:09.223 回答
1

只是不要缓存它们。
您的“缓存”方式根本不是缓存,但这不是主要问题。
问题是我怀疑您是否有任何理由缓存您的模板或其输出。

所以,就让一切保持原样,没有任何“缓存”。

于 2012-12-22T10:52:04.063 回答