А совсем по-хорошему, кроме создания сессии только для залогиненных пользователей (что, вообще говоря, правильно), поставьте перед веб-сервером реверс-прокси — nginx или varnish (рекомендую последний), которые будут проверять наличие куки залогиненного пользователя, и в случае ее отсутствия выдавать контент из своего кеша. Таким образом, вы вообще не будете запускать PHP для незалогиненных пользователей.
Вот, например, как решается эта проблема в друпале (неважно, что у вас, принципы, скорее всего, те же)
www.varnish-cache.org/trac/wiki/VarnishAndDrupal