Я использую Magento вместе с Varnish Cache и разрабатываю модуль.
Вот мой план: определить URL на controller_action_predispatch
событие и, если URL соответствует тому, что я ищу, запустите метод.
Довольно просто, и это работает:
$this->_action = $observer->getEvent()->getControllerAction();
$request = $this->_action->getRequest();
if ($request->getRequestString() == 'my route') {
//Process Action
}
Скажем, например, я ищу /checkout/cart/
в качестве примера, то это работает нормально … локально.
На нашем промежуточном сервере у нас есть Varnish Cache, работающий через расширение Nexcess Turpentine. Так, /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, иначе я не могу судить, какую страницу пользователь посещает в данный момент.
Задача ещё не решена.
Других решений пока нет …