Добро пожаловать, Гость!
Дневник - легко и просто сделать кэш.
VHlam : легко и просто сделать кэш.4 Ноября 2013
file_exists() - проверяет наличие указанного файла или каталога.
readfile() - позволяет прочитать данные из файла. Т.е. эта функция будет читать наш статичный файл
ob_start() - включает буферизацию вывода. Т.е. все, что будет происходить после этой функции, будет сохранено в буфер(временное хранилище)
ob_get_contents() - получает содержимое буфера вывода.
ob_end_flush() - отправляет содержимое буфера вывода пользователю (если оно имеется), очищает его и выключает буферизацию вывода.
fopen - открывает файл или URL
fwrite() - записывает содержимое в файл.
fclose() - закрывает файл.
На сервере предварительно создадим папку caсhe (название можно придумать любое допустимое)
Итак, приступим:
1. В самом начале нашей php - страницы пишем:
<?php
if (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 должна быть доступна на запись. Если предполагается выводить какие-то случайные заметки , стоит проводить буферизацию блоками и подключать БД к страничке до включения буферизации, т.е. вы должны определить что должно кэшироваться и кэшировать только нужные участки, создавая файлы в папке кэш с названием ваших блоков. В принципе тоже ничего сложного, если вы поняли это урок, сделать блочную буферизацию не составит большого труда.
Вот и все, что требуется для простейшей реализации кэширование сайта на стороне сервера. Всем удачи, коменты приветствуются
Категория: Авторские
file_exists() - проверяет наличие указанного файла или каталога.
readfile() - позволяет прочитать данные из файла. Т.е. эта функция будет читать наш статичный файл
ob_start() - включает буферизацию вывода. Т.е. все, что будет происходить после этой функции, будет сохранено в буфер(временное хранилище)
ob_get_contents() - получает содержимое буфера вывода.
ob_end_flush() - отправляет содержимое буфера вывода пользователю (если оно имеется), очищает его и выключает буферизацию вывода.
fopen - открывает файл или URL
fwrite() - записывает содержимое в файл.
fclose() - закрывает файл.
На сервере предварительно создадим папку caсhe (название можно придумать любое допустимое)
Итак, приступим:
1. В самом начале нашей php - страницы пишем:
<?php
if (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 должна быть доступна на запись. Если предполагается выводить какие-то случайные заметки , стоит проводить буферизацию блоками и подключать БД к страничке до включения буферизации, т.е. вы должны определить что должно кэшироваться и кэшировать только нужные участки, создавая файлы в папке кэш с названием ваших блоков. В принципе тоже ничего сложного, если вы поняли это урок, сделать блочную буферизацию не составит большого труда.
Вот и все, что требуется для простейшей реализации кэширование сайта на стороне сервера. Всем удачи, коменты приветствуются
Категория: Авторские
Комментарии: (0)
DCMS-Social.ru - движок социальной сети, вап и веб мастерская, файло-обменник и форум.
Статистика DCMS-Social.ru: Пользователей - 14967, тем на форуме - 30292, сообщений - 298887