Symfony cannot cache forwarded action. It always wants to cache base action which is not good for me. I have one main Article/Show action which always forwards to another Article actions basing on article type (from DB), for example: homepage, news, gallery and so on - so it is obvious I don't want to cache article/show but each single action. But it's impossible. In cache.yml I have "enabled: off" for "show" and "enabled: on" for some actions I want to have cached.
And I know why it can't work. sfPHPView::render() sends internal URI to sfViewCacheManager::getActionCache(). In fact this internal URI is based on routing ($this->context->getRouting()->getCurrentInternalUri()) not on exact module/action which executes view render.
This internal URI points always to article/show (because I have route which sends requests to this action) - not to my forwarded actions (like article/homepage)!
Of course when I enable cache for article/show Symfony does not really know about forwarded actions so it fails also on component slots (I have different sidebars for each forwarded action) and I can't control when to cache and when not to cache. That's why I can't cache article/show.