【问题标题】:Url Detection in Magento where Varnish is ActiveMagento 中 Varnish 处于活动状态的 URL 检测
【发布时间】:2014-12-19 12:01:43
【问题描述】:

我将 Magento 与 Varnish Cache 结合使用,并且正在开发一个模块。

这是我的计划:在 controller_action_predispatch 事件中检测 URL,如果 URL 与我要查找的内容匹配,则运行一个方法。

很简单,这很有效:

$this->_action = $observer->getEvent()->getControllerAction();
$request = $this->_action->getRequest();
if ($request->getRequestString() == 'my route') {
    //Process Action
}

例如,我以 /checkout/cart/ 为例,然后这在本地运行良好。

在我们的登台服务器上,我们通过 Nexcess Turpentine 扩展运行 Varnish Cache。所以,/checkout/cart/ 看起来像这样:

/turpentine/esi/getBlock/method/esi/access/private/ttl/86400/hmac/7b123a94c32437dbc3e871e9a8671e0c25acfd8b0d9aac4ef67e1a1e0ffe75b0/data/FG4tbo.vXe1BP-stDckM6MmxY8YJuimtBsPXs4DN60EvEjeTv6qGAV8dLiEF6AySMcp8zBoGCxrPo-3i6h1IeueERsjAyw8sRQcvh-5nmMr8wqUlNR36YRv6tgHn9tDsRBwjm6AurTfx46dLgi6HFhJcUwpPkl957MQhMBsN5tfwLWnYS7U0SfNxYKvHaXXyHQcvGVNEpfUKUMPsICC7wzJ7iGaahd8akvZ1VpZ.ifLOfWaXDlqdybZaQj2ZPq85DzBrM2-6sVbdv1fL4OOZxC-0A5iizQcwg9leLR1.n67bKCHYpndbfVxUpTN1Dxystq463pzP5tlm-sy6Sg6GH743ZQw6BMG8wlbgnPfWDu5Gf1Ty1K3Ercz54eOB59r7OCIUzEYE9HFQreMzIUaTEMg9GHBakggdyyi4WuHSB6E=/

我还尝试检查产生相同结果的$_SERVER['REQUEST_URI']; 和再次产生相同结果的Mage::helper('core/helper')->getCurrentUrl();

我需要找出 Varnish 输出解析到什么路由,否则我无法判断用户当前访问的页面。

【问题讨论】:

    标签: php magento varnish


    【解决方案1】:

    我知道这是一个非常古老的问题,但也许有人仍在努力解决这个问题。要修复它,我必须在 turpentine_esi.xml 文件中添加 registry_keys 参数:

    <action method="setEsiOptions">
        <params>
            <access>private</access>
            <scope>page</scope>
            <ttl>0</ttl>
            <registry_keys>
                <current_category/>
            </registry_keys>
         </params>
      </action>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-02
      • 2012-01-27
      • 2015-04-11
      • 1970-01-01
      • 2020-03-02
      相关资源
      最近更新 更多