You can use varnish to cache the global page.
In the page add ESI include to retrieve dynamic content. To cache dynamic content for each user, you can use memcache.
I used xcache as php accelerator for dynamic content, but memcache seems to be much better for large installations because the possibility of sharing cache between webservers.
I'm also thinking of using a faster webserver than apache (like lighttpd or nginx) for serving files of the var directory.
for static file you can use a light apache2 setup. We have made some test of both setup and we found the same result.
If you want something complex ;-):
1.Nginx/apache as a proxy only to compress page
2.Varnish for basic cache (page+image) and ESI (varnish can use ESI with gzip content)
3.apache2 ezpublish +static file (HTML) 4.memcache+SQL