Навигация
Главная
Новости портала
Форумы портала

Наши клиенты
Гостевая книга
Отзывы клиентов

Каталог сайтов
Поиск по сайту
Карта сайта

Whois сервис
Web инструменты
Файловый архив
Статистика





Rambler's Top100

Участник каталога WebMoney MegaStock

Тиц Яндекс и PR Google



Анти спам

RSS информер

службы мониторинга серверов

Наша кнопка

Делаем функцию кэширования страниц сайта...
Кэширование страниц на сайтах это неотъемлемый атрибут снижения нагрузки на сервер и сокращения времени загрузки самой страницы.

Часто страницы на сайтах генерируются динамически.
Это теперь модно. Однако, в реальности, почти всегда страница собирается заново гораздо чаще, чем она изменяется.
Грубо говоря, мы опубликовали новый документ, и при каждом обращении к нему он заново считывается, скажем, из базы данных, заново прогоняется через шаблон и т.д.
Мы каждый раз делаем одну и ту же работу.

А можно просто один раз сделать, а потом сохранить результат этой работы. И при каждом запросе выдавать готовый результат, а не делать все заново. Это и есть кэширование.

Оно позволяет, снизить нагрузку на сервер и на базу данных.

Единственная проблема — это старение кэша.
Допустим, что данные на странице изменились, а кэш страницы — еще нет, и пользователю будет выдаваться старая версия страницы.

Рассмотрим способы борьбы с этим недугом.
 

1. Выставлять более-менее приемлемое время старения кэша. Например, через 5 минут страница устаревает и кэш генерируется заново.
Минусы: возможна ситуация, когда пользователю 5 минут будет показываться старая страница.

2. Кнопка «очистить кэш». В некоторых системах вообще нет кнопки «очистить кэш», вместо нее есть кнопка «обновить сайт целиком». Нажимаем на эту кнопку — и весь сайт генерируется в статичные файлы, то есть, фактически, в кэш.
Минусы: поменяли одну страницу, а обновлять приходится весь сайт.

3. Очистка кэша. Очищается кэш только той страницы, которую мы изменили.
Минус: часто изменение одной страницы затрагивает несколько других страниц. Главное — понять, каких именно страниц, и очистить кэш у них тоже.


А теперь давайте разберемся, как сделать себе кэш.

Существует некая функция PHP — ob_start, она позволяет не выводить страницу в браузер, а, например, сохранить ее в переменную.
Каким образом использовать эту переменную и как создать простейший кэш на сайте – написано чуть ниже на примере.


Данный код вставляем в начало страницы:

$url=$GLOBALS['REQUEST_URI'];
$crc=md5($url);
$modif=time()-@filemtime ("cache/$crc");
if ($modif<600) {
include ("cache/$crc");
exit(); }
ob_start ();

Как это работает.

Берем адрес страницы, вычисляем из него md5.
Вычисление будет использоваться, как идентификатор страницы. Например, для URL http://имя_сайта/php/index.php - md5 будет всегда одним и тем же.
Этим мы и воспользуемся.

Файлы кэша будут лежать в директории cache.
Смотрим, сколько секунд - filemtime, исполнилось файлу с кэш данной страницы. Если он не очень старый (меньше 600 секунд) и существует — выводим его через include.
Если нет — то включаем функцию ob_start и продолжаем дальше.


Данный код вставляем в конец страницы:

$cache = ob_get_contents();
ob_end_clean ();
echo $cache;
$fp = @fopen ("cache/$crc", "w");
@fwrite ($fp, $cache);
@fclose ($fp);

Как это работает.

Считываем содержимое буфера функцией ob_get_contents. Получаем в переменной $cache то, что должно было, выводится в браузер.
Выводим в браузер функцией echo.
Записываем содержимое буфера переменной $cache в директорию cache в файл $crc.

Все. Теперь при следующем обращении к странице с этим адресом, код находящийся в начале страницы будет смотреть, есть ли соответствующий файл в кэше и если он еще не устарел — прерывать обработку генерации страницы функцией exit, и выводить в браузер страничку из кэша.
Примерно так все и работает.
Таким образом, страница выводится из кэша примерно за 0.001–0.004 секунды. В результате мы выигрываем во времени загрузки страницы и не нагружаем сервер запросами интерпретатора РНР и генерацией страниц, а так же базу.


Понравилась Новость - щелкни на рекламе "Бегуна" - помоги сайту.

Разместил: GRAF | Дата: 24.10.2008
[ Напечатать статью | Отправить другу ]
Рейтинг статьи

Средняя оценка: Всего голосов:0

Отлично
Хорошо Нормально Пойдёт Плохо
Смотрите также связанные темы

2009-12-26 11:31:44 - Новогоднее обращение
2009-12-13 20:07:44 - Роботы рунета - часть четвертая
2009-12-07 10:05:00 - Роботы рунета - часть третья
2009-12-05 09:15:00 - Роботы рунета - часть вторая
2009-12-03 11:45:00 - Роботы рунета - часть первая
2009-11-29 16:10:36 - Как раскрутить новый сайт
2009-08-25 06:59:16 - Поисковая оптимизация...
2009-07-05 18:58:00 - Более 100 инструментов для всесторонней проверки сайта
2009-05-22 08:40:24 - Простое кэширование в РНР...
2009-05-11 13:36:01 - Управляем индексацией Google...
Закладки
Информация


Добро пожаловать,
Гость

Регистрация или вход
Потеряли пароль?

  Ваш логин  
  Ваш пароль  
  Код  
  

Сейчас онлайн
Пользователей: 0
Гостей: 5
БотовБотов: 0
Всего: 5
Наши проекты
Поиск работы и подбор персонала