En mi opinión la mejor opción es usar sistemas de cache para servidor (
squid, apc, etc...) combinados con aceleradores php (
eaccelerator, xcache, etc..)
Aquí tienes la definición exacta de lo que es un acelerador php y enlaces a listas comparativas de los aceleradores más populares:
http://en.wikipedia.org/wiki/List_of_PHP_accelerators. Según menciona el artículo, la mejora puede reducir la carga del servidor e incrementar la velocidad de ejecución del código PHP entre 2 y 10 veces, dependiendo de múltiples factores como el tiempo de ejecución de la aplicación PHP y la cantidad de código ejecutado en cada petición.ç
Yo no tengo mucha experiencia con aceleradores, pero en cuanto a sistemas de caché, Moodle, por la forma en que está diseñado, es ideal para usar sistemas de caché. En una Moodlemoot en la que estuve el año pasado, hubo un taller sobre el tema de sistemas de caché, y aunque las pruebas que hicieron no reflejaban un escenario real, solo por la cantidad de peticiones a base de datos que se ahorran entre el sistema de cache y una buena configuración de la caché de la base de datos, te puedes ahorrar un buen montón de recursos y tiempo de respuesta.
En cualquier caso, personalmente creo que para afrontar procesos de optimización es imprescindible contar con buenas estadísticas de uso (
tráfico, peticiones a bd, uso de disco, etc..) sino simplemente estarás haciendo los ajustes a ciegas. Además, la configuración que puede valer en un periodo determinado, puede ser perjudicial en otro momento. Mi consejo es que recojas estadísticas monitorizando el uso del servidor en distintos periodos, y a partir de ahí decidas qué partes del sistema (
MySQL, PHP, servidor, cliente, etc...) se podrían mejorar y cuales no. A veces es solo cuestión de afinar un poco la configuración del servidor http.