I'm new in [Symfony](http://en.wikipedia.org/wiki/Symfony) and I have a problem with logical code organisation.

The problem is connected with cache and different version of webpage for guests, logged in users and owner.

For example. I have 'user' module, which has 'show' action, and the URL is /user/show/:id and URL is the same for every visitor. But the content of the page depends on visitor and is selected with 'if' conditions so... If I clear the cache and the first visitor is guest, then others (including owner and logged in users) will see the guest's cached page.

Some kind of solution can be separating each view (owner, guest, logged in user) to partial, but it's against the [DRY](http://en.wikipedia.org/wiki/Don%27t_repeat_yourself) rule.

How to do this?