Magento 可以在缓存键中使用会话变量吗?
Posted
技术标签:
【中文标题】Magento 可以在缓存键中使用会话变量吗?【英文标题】:Can Magento use a session variable in a cache key? 【发布时间】:2012-02-23 02:53:14 【问题描述】:我正在对几个主页布局进行拆分 A-B 测试。有一个观察者设置会话变量(组 A 或组 B),然后布局会根据该变量进行更改。
问题在于页面正在缓存(在 Magento 整页缓存中),无论用户在哪个组中,他们都看到的是 A 页面或 B 页面。
我可以修改 Magento 使主页的每个版本分别缓存吗?或者我可以在主页上完全禁用缓存吗?或者有没有更好的方法来做这种测试?
【问题讨论】:
您应该为您的块实现整页缓存打孔。请参阅本教程 this tutorial 和 this question on SO。 【参考方案1】:这并不直接适用,但我必须根据页脚所在的页面以不同方式缓存页脚,最后编辑 Mage/Page/Block/html/Footer.php
文件并通过将部分 url 添加到返回的变量。你能不附加会话变量吗?
我知道您并没有像我一样看页脚,但它似乎可以为您指明一个有用的方向。
【讨论】:
【参考方案2】:您可以使用符合 HTTP 1.1 的标头来更改特定页面的缓存行为。
见:http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html#sec13.2.6
您需要的标头是Cache-Control: no-cache
。
您需要将该标题与文档一起发送出去。使用 php,您将使用 header 函数来指定标题。
header("Cache-Control: no-cache");
【讨论】:
抱歉,我的问题不够清楚。有问题的是内部 Magento 缓存,而不是浏览器缓存。以上是关于Magento 可以在缓存键中使用会话变量吗?的主要内容,如果未能解决你的问题,请参考以下文章
Magento EE 1.9 的缓存:我们应该使用整页缓存(带有打孔)和/或“经典”块缓存吗?