[line
97]
Class to cache the output of a script using the output buffering functions
Simple output cache. Some pages require lots of time to compute. Caching the output can increase the overall speed dramatically, especially if you use a Shared Memory storage container.
As you can see in the example the usage is extemely simple. To cache a script simple put some few lines of code in front of your script and some at the end. A preferrable place for this are the auto_prepend and auto_append files (=> php.ini).
Usage example:
// place this somewhere in a central config file define(CACHE_STORAGE_CLASS, 'file'); // file storage needs a dir to put the cache files define(CACHE_DIR, '/var/tmp/');
// get a cache object $cache = new Cache_Output(CACHE_STORAGE_CLASS, array('cache_dir' => CACHE_DIR));
// compute the unique handle. // if your script depends on Cookie and HTTP Post data as well // you should use: // $cache_handle = array( // 'file' => $REQUEST_URI, // 'post' => $HTTP_POST_VARS, // 'cookie' => $HTTP_COOKIE_VARS // ); // But be warned, using all GET or POST Variables as a seed // can be used for a DOS attack. Calling http://www.example.com/example.php?whatever // where whatever is a random text might be used to flood your cache. $cache_handle = $cache->generateID($REQUEST_URI);
// now the magic happens: if cached call die() // to end the time consumptiong script script execution and use the cached value! if ($content = $cache->start($cache_handle)) { print $content; print '<p>Cache hit</p>'; die(); }
// time consumption script goes here.
// store the output of the cache into the cache and print the output. print $cache->end(); print "<p>Cache miss, stored using the ID '$id'.</p>";
If you do not want to cache a whole page - no problem:
if (!($content = $cache->start($cache_handle))) { // do the computation here print $cache->end() } else { print $content; }
If you need an example script check the (auto_)prepend and (auto_)append files of my homepage:
http://www.ulf-wendel.de/php/show_source.php?file=prepend http://www.ulf-wendel.de/php/show_source.php?file=append
Don't know how to use it or you need profiling informations?` Ask Christian he was patient with me and he'll be so with your questions ;).
Have fun!