В этом уроке я расскажу о простом способе
кэширования сайта на стороне сервера. В результате мы получим не только ускорение загрузки страниц, но и снизим нагрузку на сервер и базу данных.
1. В самом начале нашей php - страницы пишем:<?phpif (file_exists('cache/index_'.$_GET["page"].'_'.$_GET["id"].'.cache')){ readfile('cache/index_'.$_GET["page"].'_'.$_GET["id"].'.cache'); exit();} ob_start();// далее идет любой ваш html-php кодinclude("includes/bd.php");<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">и т.д. и т.п.?>
Если у нас существует файл
index_xx_yy.cache, то просто считываем содержимое файла, выводим на экран и останавливаем какие-либо дальнейшие действия на странице. Здесь
xx - это значение переменной
$_GET["page"] (например номер страницы),
уу - это значение переменной
$_GET["id"] (например какой-то параметр, формирующий нашу страничку). Если же нет, в папке кэш нашей статичной копии включаем буфер и записываем в него все, что происходит на странице.
2. В самом конце после тэга :</html>
<?php $buffer = ob_get_contents();ob_end_flush(); $fp = fopen('cache/index_'.$_GET["page"].'_'.$_GET["id"].'.cache', 'w'); fwrite($fp, $buffer); fclose($fp);
Записываем в
$buffer содержимое буфера, после останавливаем буферезацию и очищаем его. Затем открываем файл
index_xx_yy.cache // (если его нет на сервере, то создаем, за это отвечает параметр
'w' у ф-ции
fopen), записываем в файл
$fp значение
$buffer и закрываем его. Теперь у нас php - страница будет обрабатываться на сервере 1 раз с первым посетителем, а для всех последующих выводить статичный html- код.
Что будет если параметров
$_GET["page"] и $_GET["id"] не существует? (если загружена страница
index.php без переменных
$_GET). Файл
index_xx_yy.cache примет вид
index__.cache (после
index двойная черта), что в принципе является нормальным именем файла.
3. Очистить кэш.Просто добавьте в нужном месте.
unlink ('cache/index_'.$_GET["page"].'_'.$_GET["id"].'.cache');
Эта функция удалит кэш файл
index_xx_yy.cache.
Помните:Папка
cache должна быть доступна на запись. Если предполагается выводить какие-то случайные заметки , стоит проводить буферизацию блоками и подключать БД к страничке до включения буферизации, т.е. вы должны определить что должно кэшироваться и кэшировать только нужные участки, создавая файлы в папке кэш с названием ваших блоков.
Отзывы