Magento可以在缓存键中使用会话变量吗?

问题描述:

我正在几个主页布局上运行拆分A-B测试。有一个观察者设置会话变量(组A或组B),然后根据该变量更改布局。Magento可以在缓存键中使用会话变量吗?

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

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

+0

您应该为您的块实施整页缓存打孔。看到这个教程[本教程](http://tweetorials.tumblr.com/post/10160075026/ee-full-page-cache-hole-punching)和[这个问题在SO](http://*.com/问题/ 8126548 /努力,得到动态内容,打孔,穿magentos全页缓存)。 – Zyava 2012-01-31 12:28:04

这并不直接适用,但我不得不根据页面的不同来缓存页脚,并最终编辑Mage/Page/Block/Html/Footer.php文件并通过将url部分添加到返回的变量来更改getCacheKey()函数。你不能追加会话变量吗?

我知道你并没有像我那样看着页脚,但它似乎可能会指向你一个有用的方向。

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

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

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

您需要将该标题与文档一起发送出去。使用php,你可以使用头函数来指定头文件。

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

对不起,我的问题还不够清楚。这是内部Magento缓存有问题,而不是浏览器缓存。 – 2012-01-31 11:40:48