我如何将变量传递给PHP中的缓存内容?

时间:2008-09-17 20:43:45

标签: php caching variables

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

MY PHP PAGE:

// 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()进行渲染时,出现的不是我投入的内容。

修改

更进一步,我可以通过调用另一个拉取相同内容并传入关闭缓存的参数的方法来“缓存”缓存。谢谢大家的帮助。

3 个答案:

答案 0 :(得分:3)

显然,你做不到。缓存的全部意义在于缓存的“事物”不会改变。所以你要么:

  • 提供参数
  • aviod caching
  • 在设置其他参数时使缓存无效

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

答案 1 :(得分:1)

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

$this->renderSomeHTML(true);

答案 2 :(得分:0)

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

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