用于php重定向的Magento Varnish Turpentine打孔

时间:2016-04-01 13:58:26

标签: php magento redirect caching

在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。

如果有人有任何建议或帮助,我们将不胜感激。

1 个答案:

答案 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>