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á.