Como me gustan estos threads :D
 
A ver... 
1- Usá cahce como dice GatoV, pero no contra la db (pierde gracia) sino contra un archivo (con las funciones de buffer tomas la salida y la escribís en un archivo el cual re escribís durante X segundos). 
A: Para tener la salida: 
 Código PHP:
    <?
ob_start();
echo "Hola"; ?>
<br />Más texto
<?
$output = ob_get_contents(); ob_clean();
#$output  tendrá: hola<br />Más texto
?>    
  Con esto y teniendo PHP5 podés hacer un 
file_put_contents. Ahora bien, antes de todo esto lo que harás será ver si existe el archivo (is_file() ) de cache y ver:  
 Código PHP:
    if( filemtime($file) > date('U')-$segundos){
... 
    
  Entonces, si entrás harás un file_get_contents, sino harás el proceso del buffer. 
2- Lo que dice Carxl es lo correcto, no hagas: 
 Código PHP:
    <?
echo "<b>$foo</b>"; 
?>    
  Haz: 
 Código PHP:
   
<b><?=$foo?></b>   
  3- Por último, revisa las funciones que usas. Me parece que se pueden agregar mysql_free_result, y por ejemplo no uses mysql_fetch_array, con un mysql_fecth_assoc te sobra para el uso que le estás dando. 
Saludos...si con esto no te anda podemos hilar más fino... 
Nota: Obviamente son todas ideas, no copies y pegues nada sin antes comprenderlo y adaptarlo a tu script; cualquier cosa preguntá.