0

本质上,我有一个 PHP 页面,它调用了一些其他 HTML 以通过对象的方法呈现。它看起来像这样:

我的 PHP 页面:

// some content...

<?php
    $GLOBALS["topOfThePage"] = true;
    $this->renderSomeHTML();
?>

// some content...

<?php
    $GLOBALS["topOfThePage"] = false;
    $this->renderSomeHTML();
?>

第一个方法调用被缓存,但我需要 renderSomeHTML() 根据其在页面中的位置显示略有不同。我尝试传递给 $GLOBALS,但值没有改变,所以我假设它正在被缓存。

如果不通过方法传递参数或不缓存它,这是不可能的吗?任何帮助表示赞赏。这不是我的应用程序——它是 Magento。

编辑:

这是 Magento,它看起来正在使用 memcached。我试图通过 renderSomeHTML() 传递一个参数,但是当我在要呈现的 PHP 包含上使用 func_get_args() 时,出来的不是我放入其中的。

编辑:

再往下,我能够通过调用一个提取相同内容的不同方法并传入一个关闭缓存的参数来“使”缓存“无效”。感谢大家的帮助。

4

3 回答 3

3

显然,你不能。缓存的全部意义在于您缓存的“东西”不会改变。所以你要么:

  • 提供一个参数
  • 避免缓存
  • 设置不同参数时使缓存无效

或者,您自己重写缓存机制 - 以支持一些动态绑定。

于 2008-09-17T20:49:59.930 回答
1

不同的框架对 Chaching 的处理方式不同,因此您必须帮助我们提供更多信息。但我也想知道你是否可以将它作为参数传递而不是使用$GLOBALS.

$this->renderSomeHTML(true);
于 2008-09-17T20:47:36.830 回答
0

您的问题似乎不清楚,但缓存几乎意味着“存储因此我们不必再次计算它”。如果您希望内容有所不同,您需要缓存更多结果并选择正确的缓存对象之一发回。

需要更多信息才能给出更好的答案。什么是缓存文档,Smarty?“它在页面中的位置”是什么意思?它是什么'?

于 2008-09-17T20:51:16.590 回答