$cache_file = $_SERVER['DOCUMENT_ROOT'].'/cache/'.md5($_SERVER['REQUEST_URI'] ).'.tmp';
if (file_exists($cache_file)) {
exit(require_once($cache_file));
} else {
ob_start( );
/*
* Зміст сторінки
*/
// Зберігаємо в кеш-файл
$fopendb = fopen($cache_file, 'w+');
flock($fopendb, LOCK_EX);
fwrite($fopendb, ob_get_contents());
flock($fopendb, LOCK_UN);
fclose($fopendb);
ob_end_flush();
}Суть наступна:1. В директорії cache зберігаємо файл із повністю сформованою інформацією. Назва файлу є md5 від URL.
2. Перевіряємо існування файлу кешу: якщо існує - завантажуємо його зміст, інакше виконуємо завантаження сторінки з паралельним зберіганням інформації у пам’ять, яку збережемо у файл кешу.
Обов’язково після внесення будь-яких змін в інформацію необхідно очистити директорію з кешованими файлами, що робить наступна функція:
function clear_cache() {
$opendir = opendir($_SERVER['DOCUMENT_ROOT'].'/cache/');
while (($element = readdir($opendir)) !== false) {
if ($element != '.' && $element != '..') {
@chmod($_SERVER['DOCUMENT_ROOT'].'/cache/'.$element, 0777);
unlink($_SERVER['DOCUMENT_ROOT'].'/cache/'.$element);
}
}
closedir($opendir);
}В результаті такого простого рішення можна суттєво оптимізувати завантаження сторінок вебсайту.