Кэширование данным методом можно назвать "ленивым" и далеко не самым эффективным. Он основан на буферизации страницы, сохранения в файл и вывода в конце.
Подходит такой метод только для редко обновляющихся или же вовсе статических сайтов.
Допустим, у нас есть 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(); //Закрываем буфер с выводом ?>
Вот и всё. Используя вот такое простое кэширование можно существенно снизить нагрузку на сервер.
Главное, при каких-либо изменениях на странице, не забывайте про существование этого самого кэша. )
