2011-08-19 75 views
1

我有一个非常奇怪的缓存问题。 我有两家语言的商店。当我将语言从德语改为英语时,它是第一次运作。所以当我在A方(德国)时,它切换到A(英文)。但是......如果我改变页面或类别...例如从A到B然后我再次切换语言,它将我重定向回A而不是B.Magento缓存问题

这是一个非常大的缓存问题。我停用了所有缓存选项,之后它的功能完美,但我无法运行没有任何缓存功能的商店:

这里是我的商店: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> 

它必须是高速缓存。 有人得到了我的解决方案或可以帮我吗?非常感谢你。

回答

3

问题很可能是您将语言切换器放在了页脚块中。 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') 
    ); 
} 

这意味着块输出将根据当前的商店不同版本进行缓存,设计等

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

+0

非常感谢您的回答!你能帮我解决这个问题吗?还是别人?我不是很擅长magento编程。 :)或只是给我一个提示,我必须开始。 – Marek123

+2

一个简单的方法是将app/code/core/Mage/Page/Block/Html/Footer.php复制到app/code/local/Mage/Page/Block/Html/Footer.php中并注释掉_construct函数。 –

+0

谢谢! :)会尝试! – Marek123