Использование буферизации вывода для кэширования на стороне сервера
Вы уже видели базовый пример буферизации вывода, теперь следующий шаг, в
котором буфер сохраняется в файл:
Пример 5.2. 2.php
<?php //
Если существует кэшированная версия… if
(file_exists('./cache/2.cache')) {
// Читаем и выводим файл readfile('./cache/2.cache'); exit();
}
// Начинаем буферизацию вывода
ob_start();
// Выводим остальной HTML ?>
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html
xmlns="http://www.w3.org/1999/xhtml"> <head>
<title>Кэшированная страница</title> <meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head> <body> Эта страница кэшируется средствами
PHP <a href="http://www.php.net/outcontrol">Функции управления
выводом</a> </body> </html>
<?php //
Получаем содержимое буфера $buffer = ob_get_contents();
// Останов буферирования
и вывод буфера ob_end_flush();
// Сохранение кэш-файла с
контентом $fp =
fopen('./cache/2.cache', 'w'); fwrite($fp, $buffer); fclose($fp);
?>
|
Сначала вышеописанный скрипт проверяет наличие существования версии странички
в кэше, и, если она имеется, скрипт читает и выводит её. В противном случае, он
использует буферизацию вывода для создания версии страницы в кэше. Она
сохраняется как файл, после использования ob_end_flush для отображения страницы
пользователю.
Файл 2.cache содержит точную копию
HTML, которую предоставляет скрипт: <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html
xmlns="http://www.w3.org/1999/xhtml"> <head>
<title>Кэшированная страница</title> <meta
http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head> <body> Эта страница кэшируется средствами
PHP <a href="http://www.php.net/outcontrol">Функции управления
выводом</a> </body> </html> |