Website Performance Optimization : Page Caching


A web cache is an approach for the temporary storage (caching) of web documents, such as HTML pages and images, to reduce bandwidth usage and server load. The content of a webpage can be stored in a file temporarily so that every time server receives a request, it doesn’t need to process time and again. This is termed as Page Caching.

This is the fastest way to cache your content as opposed to going dynamically through the process of generating the content.  Content management systems have many pages that are a great fit for this approach, but account-based systems where people log in and manipulate their own data are often less likely candidates.

In this article, we will be going through a simple approach for achieving Page Caching.

Basic Idea behind Page Caching:

The basic idea behind Page Caching is to store a static rendered contents of a webpage in a file. Whenever server receives a request for the webpage, it first checks whether the webpage already has a cache file or not. If cache file is present, the content from the cache file is rendered in the browser without any further processing. And if no cache is present, all processing are done for displaying the webpage and then a cache file is created.

However, once a cache file is created, we will always get the same output even if the code in the webpage is changed. To get the changes in the output, we need to delete the cache file first. This clearing of cache can be done manually or by using cronjob in the server.

ALSO READ  Top 10 Essential Questions for a PHP Developer Interview with Expert Answers

Basiacally, we need two files for this:

  • index.php (webpage that is to be cached)
  • functions.php (functions required for caching)


function getCurrentURL(){
  $isHTTPS = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS']=='on');
  $port = (isset($_SERVER['SERVER_PORT']) && ((!$isHTTPS && $_SERVER['SERVER_PORT']!="80") || ($isHTTPS && $_SERVER['SERVER_PORT']!="443")));
  $port = ($port)? ':'.$_SERVER['SERVER_PORT']: '';
  $url = ($isHTTPS? 'https://': 'http://').$_SERVER['HTTP_HOST'].$port.$_SERVER['REQUEST_URI'];
  return $url;
function cleanURL($url){
  $url = str_replace(' ','-',$url);
  $url = preg_replace('/[^A-Za-z0-9\-]/','',$url);
  return trim(preg_replace('/-+/','-',!empty($url)? strtolower($url):""),"=");
function setPageCaching($content){
  $url = "cache/".cleanURL(getCurrentURL());
  return true;
function getPageCaching(){
  $url = "cache/".cleanURL(getCurrentURL());
    return file_get_contents($url);
    return false;



  $cached_html = getPageCaching();
  //if page is cached, render the cached html
    echo $cached_html;
  //if page is not cached
<title>Caching Example</title>
<h2>Caching Example</h2>
<p>This is an example for page caching to improve website performance.</p>
Blah Blah Blah Blah Blah Blah Blah
</body> </html> 
$content = ob_get_contents();


Follow this video for full reference :

Comments are closed.