La mia situazione/obbiettivi sono forse un po' diversi, provo a spiegarti magari puoi darmi una mano:
Voglio implementare uno script che mi permetta di creare una cache staticaper i contenuti di un cms, la voglio per determinate pagine.
Obbiettivo è velocizzare la navigazione sul sito escludendo, per pagine dove non è strettamente necessario, l'elaborazione complessa di uno script che interroga db richiama template etc.
Sono ad un buon punto (con qualche problema e qualche domanda)
Prima dell'elaborazione da parte del cms intercetto la richiesta http e controllo se c'è il "relativo" file statico, questo controllo sarebbe l'unico per pagine nella cache e quindi penso molto veloce:
Codice PHP:// controllo se esiste la pagina relativa nella cache e se è accettata la codifica
//$cachefile è l'md5 di $_SERVER['REQUEST_URI'] più l'estensione
if ((@file_exists($cachefile)) && (strpos($_SERVER['HTTP_ACCEPT_ENCODING'],'gzip') !== false)) {
//header ("Content-Type: text/html");
header ("Content-Encoding: gzip");
@readfile($cachefile);
exit();
//interrompo lo script
}
// lo script prosegue con la generazione dinamica del contenuto da parte del cms
A fine script (mi troverò in questa situazione per richieste elaborate per file non ancora in cache) controllo se quella determinata url è tra quelle che voglio far diventare files statici:
La sostanza dello script è questa... però:Codice PHP://il metodo di questa classe restituisce 1 se la url è tra quelle che voglio mettere in cache
if ($database->loadResult() == '1'){
// genero il file di cache
$fp = @fopen($cachefile, 'w');
// salvo il contenuto della pagina nel file di cache
// lo script del cms in questo momento a prodotto un buffer del contenuto
$pageoutput = ob_get_contents() . "\n";
////gz se supportato
$data = gzencode($pageoutput, 9);
//// non gz
//// $data = $pageoutput;
fwrite($fp, $data);
fclose($fp);
}
Va bene usare file_exist per cercare nel filesystem o c'è un metodo più efficace?
Lo script è ok o migliorabile?
Grazie per qualsiasi contributo...

Rispondi quotando