Кэшировать нужно то что тормозит И меняется намного реже чем показывается. Если ничего не тормозит, либо кэшируются частоизменяющиеся данные - использование кэширования может затормозить больше чем неиспользование.
Если сайт совсем не меняется (визитка, портфолио), то можно вообще закэшировать весь результирующий HTML (с помощью ob_start() ob_getcontents(), либо это поручить varnish). Чаще же всего содержимое страниц нестатично и нужно кэшировать блоки. Чаще всего это блоки HTML (как у вас меню). Иногда это даже данные (еженочная аггрегация, топ лучших чего-то).
Здесь описаны некоторые частоиспользуемые типы хранилища:
itechtalks.blogspot.com/2011/09/php-data-caching-t...
(там еще забыли про еще apc, redis, memcache и пр.)
Из совсем других типов есть еще mysql query cache - кэширование результатов запросов, но это редко бывает полезно. Есть еще opcode cache (php accelerators) это просто полезно включить чтобы php файлы парсились реже.