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

时间:2020-03-05 19:00:00  来源:igfitidea点击:

本质上,我有一个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 include上使用func_get_args()进行呈现时,输出的结果并不是我放入的。

编辑:

更进一步,我能够通过调用拉取相同内容的另一种方法并传递一个关闭缓存的参数来使缓存"无效"。感谢大家的帮助。

解决方案

回答

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

$this->renderSomeHTML(true);

回答

显然,我们不能。缓存的全部意义在于,缓存的"内容"不会改变。所以你或者:

  • 提供一个参数
  • 缓存
  • 设置其他参数时会使缓存无效

或者,我们自己重写高速缓存机制以支持某些动态绑定。

回答

问题似乎还不清楚,但是高速缓存在很大程度上意味着"已存储,因此我们不必再次进行计算"。如果我们希望内容有所不同,则需要缓存更多结果,并选择正确的缓存对象之一发送回去。

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