Pomysłów na cache jest tyle co na sam kod

Cachowanie samych zapytań nie ma za bardzo sensu bo sam MySQL to robi [query cache].
Samo odświeżanie cache to też kwestia konstrukcji projektu

Ja w ostanim projekcie obrałem taki model, że cachuje już gotowy html np. menu, gdy szablon o niego woła to sprawdzam czy istnieje plik caches/menu/html.js - jesli tak to pobeiram z niego dane, odkodowuje [json jest chyba najwygodniejszy - stad rozszerzenie JS] i zwracam gotowy.
Jako, że pokomplikowane menu to nawet 40 zapytań (prostych w petli ale jednak) to oszczędzam sporo czasu. Na cachowaniu np. newsów wiele się nie utarga ale jednak.
Tutaj cache tworzysz przy pierwszym wyświetleniu, kasujesz przy zmianie lub usuwaniu newsa oraz jesli cache nie uzywane np. tydzien/miesiac [crontab co tydzien/miesiac sprawdzjacy daty ostaniego otwarcia pliku].
Generalnie zasada jest taka, że cachuje się najbardziej gotowe dane ale bez przesady - jeśli jakiś danych używasz często (np. u mnie tabela settings) to nie ma sensu cachować każdego ustawienia osobno gdzie jest użyte - cachujesz sobie całą tabele do pliku.
Samo cachowanie ma też wiele poziomów, można je relizować już na poziomie bazy danych w postaci tabel trzymanych w ramie (po co trzymać dane o zalogowanych userach na hdd? zmieniają się często a jak znikną w wyniku nagłego padu to też sie kuku nie stanie).
Za pozno w mojej strefie czasowej na dłuży post

Edit: Się mi przypomniało - warto też cachować generowany RSS jeśli strona jest w miarę popularna. Nie warto generować dla każdego z osobna - to duża strata mocy przez która o mało Yahoo swego czasu nie padło (dla zainteresowanych an Yahoo Dev jest art).
Generujesz raz, kasujesz jak dojdzie jakaś treść obejmująca ten kanał [np. nowy news dla kanału newsów].
Nie musze wspominać, ze jest to bez sensu dla kanału komentarzy?