我想知道是否有人能帮我解决以下问题。在我们的Magento网站,企业版1.10.1.1上,用户可以登录,它会说出另一个人的名字。然后,如果你点击另一个链接,它可能会回到你的名字。用户会话显然被混淆了。显然,这是一个完整页面缓存问题,因为我们的完整页面缓存经常无效,如果我们关闭它,用户会话就不再混乱。然而,关闭它会大大减慢网站的运行速度。将会话从数据库存储切换到文件存储(反之亦然)并没有解决此问题。有人知道问题可能是什么或如何解决吗?
非常感谢
Brenda
您应该向Magento查询补丁。我也遇到过类似的问题,礼品证书字段信息在会话之间混淆了。他们提供了一个解决问题的补丁。
在header.phtml文件中,您应该使用它来打印用户名
<?php echo $this->getChildHtml('welcome') ?>
然后,如果您想自定义消息,您可以覆盖"Mage_Page_block_Html_Welcome"块。
当您使用"全页缓存"时会发生这种情况,因为默认情况下,magento会排除全页缓存的一些块,而块"welcome"就是其中之一。如果您使用自定义代码和消息,用户名也将被缓存,其他用户将在本节中看到不同的用户名。
它可能依赖于缓存问题。尝试关闭缓存(转到管理、系统、缓存管理并禁用所有缓存)。
如果问题消失了,您需要检查缓存配置。如果没有,你真的有会话问题。BTW,存储会话(文件或DB或memcached?)
我找到了与Enterprise_PageCache_Model_Processor_Default
类相关的原因,我的方法是在config.xml
中禁用它,编辑srcappcodecoreEnterprisePageCacheetcconfig.xml
:
<requests>
<!-- <cms>enterprise_pagecache/processor_default</cms>-->
</requests>
如果Magento位于像Varnish这样的反向代理缓存后面,则该问题可能是由于Magento无法设置正确的会话参数引起的(我敢打赌确实如此)。无论何时使用中间caché系统,您都必须确保使用Apache中的apropiate模块将X_FORWARDED_FOR http标头转发给Magento,就像mod_rpaf一样,否则Magento将看到来自同一IP的所有请求,并且无法确定正确的会话隔离,因为它会认为所有请求都来自同一客户端。