Тема: Кэширование страниц
Доброго времени суток коллеги.
Если ваш ресурс прилично вырос или же пользуется популярностью и количество посетителей растёт день ото дня - целесообразно будет запустить механизм кэширования страниц, который позволит в разы снизить нагрузку на сервер.
Специально для вас я подготовил подробную инструкцию для включения этой функции.
1) Нужно создать в корне сайта папку cache_files и дать ей права на полное изменение (0777)
2) Создаём 2 файла, которые будут отвечать за логику кэширования.
Файл start_cache.php с содержанием:
<?php
// раздел настроек, которые вы можете менять
$settings_cachedir = $_SERVER["DOCUMENT_ROOT"].'/cache_files/';
$settings_cachetime = 3600; //время жизни кэша (1 час)
// код
$thispage = 'http://' .
$_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
$cachelink = $settings_cachedir.md5($thispage).".html";
if (file_exists($cachelink)) {
$cachelink_time = filemtime($cachelink);
if ((time() - $settings_cachetime) < $cachelink_time) {
readfile($cachelink);die();
}
}
ob_start();
?>
Файл end_cache.php с содержанием:
<?php
$fp = fopen($cachelink, 'w');
fwrite($fp, ob_get_contents());
fclose($fp);
ob_end_flush();
?>
1 файл проверяет, есть ли файл кэша, если он есть - загружаем его, если его нет - создаём. Так-же в нём регулируется время жизни файла кэша.
2 файл завершает процесс создания файла кэша
3) Подключаем эти файлы в шаблон нашего сайта
Первой строкой вставляем
<?php include($_SERVER["DOCUMENT_ROOT"].'*путь к файлу*/start_cache.php'); ?>
Последней строкой
<?php include($_SERVER["DOCUMENT_ROOT"].'*путь к файлу*/end_cache.php'); ?>
Вставлять файлы необходимо ОБЯЗАТЕЛЬНО в первую и последнюю строку, чтобы в кэш попадала вся страница, в противном случае - будет нарушена структура сайта
4) Тестируем проект и выявляем оптимальное время кэша. (Например в моём случае это 3 часа)
Вот и всё. Надеюсь данная статья окажется для вас полезной и вам не придётся мучаться как мне в поисках этого решения и адаптацией его к GetSimple
P.S. Для обновления кеша - просто очистите папку cache_files.