Wes Bos

Designer, Developer & Entrepreneur making the web an awesome place.

pagecache

This is a little code snippet that I use in almost every project that isn’t based on a popular CMS. Since its fairly expensive to hit the database on every page load, its a smart idea to cache the plain HTML markup of your page and serve that up. You can set how often the page cache is flushed out depending on how often you update your site’s content.

<?php
	// define the path and name of cached file
	$cachefile = 'cached-files/'.date('M-d-Y').'.php';
	// define how long we want to keep the file in seconds. I set mine to 5 hours.
	$cachetime = 18000;
	// Check if the cached file is still fresh. If it is, serve it up and exit.
	if (file_exists($cachefile) && time() - $cachetime < filemtime($cachefile)) {
   	include($cachefile);
    	exit;
	}
	// if there is either no file OR the file to too old, render the page and capture the HTML.
	ob_start();
?>
	<html>
		output all your html here.
	</html>
<?php
	// We're done! Save the cached content to a file
	$fp = fopen($cachefile, 'w');
	fwrite($fp, ob_get_contents());
	fclose($fp);
	// finally send browser output
	ob_end_flush();
?>

Have some others tricks? Leave a comment below!

This entry was posted in Code Snippets, PHP and tagged , , , . Bookmark the permalink.

13 Responses to Simple PHP Page Caching Technique

  1. Darcy Clarke says:

    Nice little snippet. Have put it to good use on some projects myself ;)

  2. jomppa says:

    Little optimization tip: there’s no need to use PHP’s parser (include) because cache file will always contain only static HTML. You should replace include() with readfile() or some other.

  3. Pingback: iFerris « 10 super useful PHP snippets

  4. Pingback: Simple PHP Page Caching Technique « Html « Php « Codes php – Share your php snippets

  5. Pingback: 10 super useful PHP snippets | CatsWhoCode.com

  6. Pingback: 10 super useful PHP snippets | Programming Blog

  7. Pingback: PHP – sistem de cache - Php - dexblog.ro

  8. Pingback: 7 个超级实用的 PHP 代码片段 | 芒果小站

  9. Pingback: 10个超级有用的PHP代码小片段 | In Eyes

  10. Jack says:

    i love this one.
    hope it work well, i am using an autocache class now but i don’t really like it.

  11. Kithu says:

    its really great artilce,it works well

  12. very good, i m going to use it, thank you

  13. Adam Ziaja says:

    Hello, this is great :) .

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>