Varnish будет запущен перед вашим приложением, получит все запросы, ответит на то, что уже есть в кэше, и перенаправит остальные на ваш сервер приложений. Поэтому его нельзя использовать так, как вам нужно.
На стороне клиента работает только браузер. Так что это можно сделать с помощью заголовков Cache-Control .
В описанном вами сценарии вы можете установить заголовок страницы, используя PHP следующим образом:
<?php header("Cache-Control: max-age=15778463"); //6 months ?>