在Magento安装中,我安装了Varnish和Turpentine。缓存工作正常但我无法为GeoIP重定向块打孔。此块在没有安装清漆的站点的开发版本上正常工作。
此GeoIP块需要执行php标头位置重定向,以根据用户的IP将用户发送到正确的语言/货币。 Magento配置了多个网站和商店视图。
因为php标题位置重定向仅在页面上没有输出时工作,所以我在Magento头块中包含了我的GeoIP块,然后将EsiOptions设置为0的生存时间。
<block type="page/html_head" name="head" as="head">
<block type="geoipswitch/geoIpSwitch" name="geoIpSwitch">
<action method="setEsiOptions">
<params>
<access>private</access>
<ttl>0</ttl>
</params>
</action>
</block>
...
我知道这不是缓存选项的最佳位置,但我正在尝试减少可能出现的问题。我尝试过使用flush事件和ajax / esi方法。
<block type="page/html_head" name="head" as="head">
<block type="geoipswitch/geoIpSwitch" name="geoIpSwitch">
<action method="setEsiOptions">
<params>
<access>private</access>
<ttl>0</ttl>
<method>ajax</method>
</params>
</action>
</block>
...
无论我在刷新缓存后尝试什么,第一个访问者都会被正确地重定向,然后每个访问者都会被发送到同一个站点而不管他们的IP。
如果有人有任何建议或帮助,我们将不胜感激。
答案 0 :(得分:0)
你的xml看起来很好,应该有用......
首先请确保您已刷新Magento的缓存存储(布局xmls和块可能会被缓存),并且您已执行完整的清除清除。
如果你已经完成了所有这些,你可以尝试的一件事是设置范围和flush_events。我建议您使用页面范围和 controller_action_layout_load_before 事件作为刷新事件:
<action method="setEsiOptions">
<params>
<access>private</access>
<scope>page</scope>
<method>esi</method>
<ttl>0</ttl>
<flush_events>
<controller_action_layout_load_before/>
</flush_events>
</params>
</action>