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