un po' di tempo fa ho lavorato con una serie di siti web sul calcio di livello mondiale, inclusi i siti ufficiali di squadre come Milan, Torino, Bari, Lazioe e svariati altri. facevano un traffico assurdo. la tecnica che abbiamo usato per risolvere i problemi di lentezza è stata quella di creare in automatico le pagine HTML statiche a partire dai dati contenuti nel DB ed inseriti dinamicamente.
cioè gli amministratori del sito inserivano i contenuti tramite un sistema di back-office; ad inserimento effettuato venivano messi in automatico dei riferimenti alla pagina all'interno di una tabella di "coda creazione". separato dal sistema di amministrazione, c'era un software (scritto in Java nel nostro caso, ma puoi usare anche altre tecnologie) che ad intervalli di tempo regolari leggeva la coda di creazione e costruiva le pagine HTML statiche, salvandole su un file server, e anche rispettando una serie di priorità che dipendono dalle tipologie di pagine (es.: la home page avrà una priorità più alta rispetto ad una pagina più interna).
ovviamente devi trovare una struttura di directory adeguata. noi avevamo risolto suddividendo le pagine in una serie di tipologie con struttura ben definita dei contenuti (es.: news, schede di dettaglio, archivio news ecc., tutte con un layout e dei contenuti analoghi da tipologia a tipologia). ad ognuna di queste strutture corrispondeva una cartella (puoi costruire una tabella di directory contenente un riferimento alla struttura della pagina, al path nel quale dovranno essere messi i files HTML generati, e alle varie tabelle contenenti i dati dei contenuti delle pagine).
ovviamente anche i links venivano costruiti in modo automatico per rispettare questa strutturazione di cartelle e pagine statiche.
se devi fare uno controllo di log-in utente puoi scrivere un PHP che non faccia altro che controllare l'utente logato, leggere il contenuto della pagina HTML statica da visualizzare, e sputarlo fuori al browser dell'utente. ogni link che punta ad una pagina protetta da log-in devi farlo puntare allo script PHP, passandogli gli opportuni parametri per metterlo in grado di riconoscere la pagina richiesta dall'utente. in questo modo stai anche nascondendo l'URL reale della pagina statica (l'utente vedrà solo l'URL del PHP, non quello degli HTML).
in questo modo il traffico sul DB è solo ed esclusivamente quello prodotto dagli amministratori che inseriscono i contenuti, e quello prodotto dal software di generazione delle pagine statiche (che ha il compito di leggere il DB e costruire il codice HTML statico), ma è quasi del tutto indipendente dal traffico degli utenti.
ovviamente tutte le pagine che devono interagire direttamente con l'utente (es.: la registrazione dei dati di un modulo di registrazione, i risultati di una ricerca ecc.) devono essere dinamiche.
in generale ti consiglio di generare contenuti statici a partire da contenuti dinamici, ogni volta che è possibile farlo. ovviamente è anche importante scindere fisicamente i server (file server contenente le pagine generate, database server, web server...).
in ultimo, le pagine protette da log-in devono essere protette anche da Google.... quindi gli HTML statici devono stare su un path non raggiungibile dal web ma comunque raggiungibile con i dovuti permessi dal software che costruisce le pagine statiche.
se hai altre domande, chiedi pure.