【问题标题】:Magento Cache ProblemMagento 缓存问题
【发布时间】:2011-10-30 16:59:32
【问题描述】:

我遇到了一个非常奇怪的缓存问题。 我有一家商店有两种语言。当我将语言从德语更改为英语时,它是第一次工作。因此,当我在 A(德语)一侧时,它会切换到 A(英语)。但是....如果我更改页面或类别...例如,从 A 到 B 然后我再次切换语言,它会将我重定向回 A 而不是 B。

这是一个非常严重的缓存问题。我停用了所有缓存选项,之后它运行良好,但我无法在没有任何缓存可能性的情况下经营商店:

这是我的商店:http://www.livewire-clothing.de/packagedetails/ 查看页面代码。切换语言和页面,再次检查代码。

这部分永远不会改变:

<select id="select-language" title="Ihre Sprache" onchange="window.location.href=this.value"> 
    <option value="http://www.livewire-clothing.de/merchandise/k.html?band=78&amp;manufacturer=55&amp;size=39&amp;___store=de&amp;___from_store=de" selected="selected">Deutsch</option> 
    <option value="http://www.livewire-clothing.de/merchandise/k.html?___store=en&amp;band=78&amp;manufacturer=55&amp;size=39&amp;___from_store=de">Englisch</option> 
</select> 

它必须是缓存。 有人为我找到解决方案或可以帮助我吗?非常感谢。

【问题讨论】:

    标签: caching magento


    【解决方案1】:

    问题很可能是您将语言切换器放在页脚块中。 Magento 中的页脚块已激活块缓存。如果您查看 Mage_Page_Block_Html_Footer ,您将看到定义的缓存键(Magento 1.5):

    public function getCacheKeyInfo()
    {
        return array(
            'PAGE_FOOTER',
            Mage::app()->getStore()->getId(),
            (int)Mage::app()->getStore()->isCurrentlySecure(),
            Mage::getDesign()->getPackageName(),
            Mage::getDesign()->getTheme('template')
        );
    }
    

    这意味着块输出将根据当前商店、设计等缓存在不同的版本中。

    但是,您的语言切换器会直接链接到每种语言的当前页面。当每个页面的链接不同时,每个页面的页脚输出都会不同。我建议通过覆盖块并删除缓存定义或使用核心/模板块来简单地禁用页脚块的块缓存。

    【讨论】:

    • 非常感谢您的回答!你能帮我解决这个问题吗?还是其他人?我在magento编程方面不是很好。 :) 或者只是给我一个提示,我必须从哪里开始。
    • 一种简单的方法是将 app/code/core/Mage/Page/Block/Html/Footer.php 复制到 app/code/local/Mage/Page/Block/Html/Footer.php并注释掉 _construct 函数。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-22
    • 1970-01-01
    相关资源
    最近更新 更多