Sólo recordar que el uso de sesiones ya ajusta por defecto algunos tipos de control del caché de las páginas generadas que usen sesiones.
Me refiero a:
session_cache_limiter()
www.php.net/session_cache_limiter
Se usa antes de session_start() y por defecto define php.ini un "private" (si mal no recuerdo) ..
Respondiendo al título original del tema: "Advertencia: La página ha caducado " .. sería cosa de ajustar vía esa función a "public" o equivalente para que tu página sea "cacheada".
En los comentarios de los usuarios de dicha función aparecen más soluciones al respecto.
Un saludo,