Простое кэширование на PHP

Кэширование данным методом можно назвать «ленивым» и далеко не самым эффективным. Он основан на буферизации страницы, сохранения в файл и вывода в конце.
Подходит такой метод только для редко обновляющихся или же вовсе статических сайтов.

Допустим, у нас есть index.php:

<html>
  <head>
    <title>Привет</title>
  </head>
  <body>
    <?php
      //Тут происходит что-то, типа вытаскиваний с базы и все такое
    ?>
  </body>
</html>

Чтобы закэшировать этот файл, например, на час, добавляем этот код перед тегом html (ну т.е. в самое-самое начало):

<?php
  $cache_dir = realpath(__DIR__).'/cache';
  $cache_name = md5(basename(__FILE__)).'.html'; //здесь имя для кэш-файла
  $lifetime = 3600; //время жизни кэша - один час
  if (!is_dir($cache_dir)) { //если нет директории для кэша
    mkdir($cache_dir); //создаем директорию для кэша
  }
  if (file_exists($cache_dir.'/'.$cache_name)) { //если кэш-файл есть
    if (filemtime($cache_dir.'/'.$cache_name) + $lifetime > time()) { //Если время кэша еще не вышло, то
      exit(file_get_contents($cache_dir.'/'.$cache_name)); //выводим содержимое нашего кэш-файла
    }
  }

  ob_start(); //Если мы здесь, значит кэш-файла нет, открываем буфер для кэширования
?>

И вот этот код после закрывающего тега html (ну т.е. в самый-самый конец):

<?php
  file_put_contents($cache_dir.'/'.$cache_name, ob_get_contents()); //записываем кэш-файл
  ob_end_flush(); //Закрываем буфер с выводом
?>

Вот и всё. Используя вот такое простое кэширование можно существенно снизить нагрузку на сервер.
Главное, при каких-либо изменениях на странице, не забывайте про существование этого самого кэша. )