Если вы используете фреймворк, то большинство из них имеют какой-то механизм кэширования, который вы можете использовать, например. Zend_Cache Zend Framework.
Если вы не используете фреймворк, то можно использовать APC или Memcache в качестве упомянутого Pelle ten Cate. Правильный подход к использованию зависит от вашей ситуации, у вас есть веб-сайт или приложение, работающее не только на сервере, и нужно ли обмениваться информацией в кэше между этими серверами? (если да, то что-то вроде memcache - ваш ответ, или, может быть, база данных или распределенное решение NoSQL, если вы чувствуете себя смелым).
Если ваш код выполняется только на одном сервере, вы можете попробовать что-то простое, например, сериализовать переменные и записать их на диск, а затем при каждом запросе проверять, существуют ли файлы, если это так, открывать и десериализовать строку в переменная вам нужна.
Хотя это того стоит, только если потребуется много времени для генерации varaible нормально,
(например, дольше, чем нужно для открытия, чтения, десериализации файла на диске)
Для кеширования HTML вы, как правило, получаете наибольшую отдачу от использования прокси-сервера, такого как Varnish или Squid, чтобы сделать это для вас, но я понимаю, что это может быть не вариант для вас.
Если это не так, вы можете записать на диск подход, о котором я упоминал выше, и сохранить фрагменты HTML в файлы. поищите в руководстве по PHP ob_start и его друзей.