Magento可以在缓存密钥中使用会话变量吗


Can Magento use a session variable in a cache key?

我正在对几个主页布局进行拆分a-B测试。有一个观察者设置会话变量(组A或组B),然后根据该变量更改布局。

问题是页面正在缓存(在Magento完整页面缓存中),无论用户在哪个组,他们都会看到A页面或B页面。

我可以修改Magento,使每个版本的主页分别缓存吗?或者我可以在主页上完全禁用缓存吗?或者有更好的方法来做这种测试吗?

这并不直接适用,但我不得不根据页脚所在的页面对其进行不同的缓存,最终编辑了Mage/Page/Block/Html/Footer.php文件,并通过向返回的变量添加部分url来更改getCacheKey()函数。是否可以不附加会话变量?

我知道你没有像我一样看页脚,但它似乎可以为你指明一个有用的方向。

您可以使用符合HTTP1.1的标头来更改特定页面的缓存行为。

请参阅:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2.6

您需要的标头是Cache-Control: no-cache

您需要将该页眉与文档一起发送出去。使用php,您可以使用header函数来指定header。

header("Cache-Control: no-cache");