Caching PHP output
When PHP4 didn’t exist and I had to use PHP3, I was
very interested in the development of some sort of caching mechanism
for the output of php scripts to reduce the load of the database,
access to the filesystem, etc. There was no good way to do that in PHP3,
but with output buffering, it is easy in php4.
very interested in the development of some sort of caching mechanism
for the output of php scripts to reduce the load of the database,
access to the filesystem, etc. There was no good way to do that in PHP3,
but with output buffering, it is easy in php4.
This is a simple example:
<?php
//Construct a filename for the requested URI
$cached_file=md5($REQUEST_URI);
if((!
file_exists("/cache/$cached_file"))||(!is_valid("/cache/$cached_file"))) {
// is_valid validates the cache, you can check for expiration
// or particular conditions in that function.
// If there's no file or it's invalid we generate the output
ob_start();
ob_implicit_flush(0);
// Output stuff here...
$contents = ob_get_contents();
ob_end_clean();
$fil=fopen($cached_file,"w+");
fwrite($fil,$contents,$strlen($contents));
fclose($fil);
}
//Output the file here we are sure the file exists.
readfile($cached_file);
?>
This is a simple example. By using output buffering, you can build
a very advanced, content-generation system, using caching mechanisms different
for different blocks or applications, etc. It is up to you.
a very advanced, content-generation system, using caching mechanisms different
for different blocks or applications, etc. It is up to you.