【发布时间】: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 输出解析到什么路由,否则我无法判断用户当前访问的页面。
【问题讨论】: