Кэширование контента в файлы PHP
Для ускорения работы PHP-сайта можно применить механизм единоразового сохранения сформированного контента в файлах кэша для их повторного использования, например меню сайта, «тяжелый» вывод выгрузки из базы данных и т.д.
Для этих целей был написан небольшой статический PHP-класс для кэширования блоков контента или страниц целиком основанный на буферизации вывода в переменную.
Код файла cache.php
<?php class Cache { public static $enable = true; public static $path = '/cache'; /** * Получение данных из кэша. */ public static function get($name) { if (self::$enable) { $file = __DIR__ . self::$path . '/' . $name . '.tmp'; } else { self::$keys[] = $name; return false; } } else { return ''; } } /** * Отправка данных в кэш. */ public static function set($content) { if (self::$enable) { $dir = __DIR__ . self::$path . '/'; } } return $content; } /** * Начало кэширования фрагмента. */ public static function begin($name) { if ($content = self::get($name)) { echo $content; return false; } else { return true; } } /** * Завершение кэширования фрагмента. */ { } /** * Очистка кэша. */ public static function clear() { $dir = __DIR__ . self::$path; } } } }
Использование
// Подключаем файл класса require_once '/cache.php'; // Кэшируем фрагмент кода if (Cache::begin('test')) { ?> <!-- ------------------------ --> <!-- "Тяжелый" вывод контента --> <!-- ------------------------ --> <?php }
Теперь, если в папке cache нет файла test.tmp, то условие выполнится, контент выведется и сохранится в файле. В другом случаи контент всегда будет выводится из файла кэша.
<!-- ------------------------ --> <!-- "Тяжелый" вывод контента --> <!-- ------------------------ -->