Solitamente un file PHP genera del codice HTML (qualche PHP che genera HTML devi averlo per forza, altrimenti non stiamo parlando di sito dinamico). Per esempio:
Codice PHP:
// Programma PHP principale
...
// Qui viene eseguito un altro file php
include 'intestazione.php'; // o require 'intestazione.php'
...
e il file intestazione.php ti butterà fuori un pò di html (magari l'intestazione del sito... è un esempio). Nel file intestazione ci potranno essere query a MySQL, calcoli e quant'altro rallenta il tuo sito.
Al posto di includere direttamente 'intestazione.php', puoi adattare l'esempio di cache che ti ho descritto:
Codice PHP:
$file = '/cache/intestazione.html';
$mtime = filemtime($file);
// Controlla se è passato più di 1 giorno dall'ultima modifica
if (time() - $mtime > 60*60*24) {
// Rigenerazione dell'html
ob_start();
include 'intestazione.php';
$html = ob_get_flush();
file_put_contents($html, $file); // Funziona solo con PHP5
} else {
readfile($file);
}
In questo modo, include 'intestazione.php' (col suo bagaglio di lentezza) verrà eseguito solo una volta al giorno: ob_start e ob_get_flush catturano l'output generato da 'intestazione.php' e file_put_contents() lo registra nel file 'cache/intestazione.html'.
Tutte le altre volte, verrà direttamente buttato in output il file html catturato, con enormi benefici in termini di velocità. Ovviamente devi strutturare il tuo progetto in modo da spostare le operazioni più lente su file PHP catturabili.
PS: il codice è da affinare (non ho controllato accessi contemporanei in scrittura), ma è comunque un buon inizio (usabile) da poter sviluppare.