06:43 Файловое кеширование DLE | |
Нашел на одном из форумов очень интересную инструкцию по хешированию DLE полной страницы Инструкция по установке: 1. Создаем папку /engine/cache/all и ставим на нее права на запись (chmod 777 или 775 в зависимости от хостера). 2. Открываем index.php и редактируем: Находим: @session_start (); Вставляем после: ///////////////Файловое кэширование////////////// if($_SESSION['dle_user_id'] == 0 && $_SERVER['REQUEST_METHOD'] == "GET") { $cache_time = 21600; //Время жизни кеша в секундах $FCache = $_SERVER['DOCUMENT_ROOT'].'/engine/cache/all/'.md5($_SERVER['REQUEST_URI']).'.html'; if (file_exists($FCache) && filemtime($FCache)>time()-$cache_time) { echo join('',file($FCache)).""; exit; } } ///////////////////////////////////////////////// Находим: $tpl->compile ( 'main' ); Вставляем перед: ob_start(); Находим: GzipOut (); Вставляем после: //////////Файловое кэширование////////// if($_SESSION['dle_user_id'] == 0 && $_SERVER['REQUEST_METHOD'] == "GET") { $pageBuf = ob_get_contents(); $fp = fopen($FCache, "w"); fputs($fp, $pageBuf); fclose($fp); } //////////////////////////////////////// После этих манипуляций в папке /engine/cache/all будут накапливаться кешированные страницы сайта. Для того чтобы устаревший кеш редкооткрываемых страниц не копился и не забивал вам винчестер, добавляем по крону выполнение следующего скрипта каждые 10 минут например. PHP код: $cache_time = 21600+10; //Время жизни кеша в секундах + 10 секунд $url = "/home/admin/domains/site.ru/public_html/engine/cache/all/"; // полный путь к папке с кешем от корня сервера. $dir = opendir($url); while(($file = readdir($dir)) !== false) { $ras = pathinfo($file); if($ras[extension] == 'html') { $FCache = $url.$file; if (file_exists($FCache) && filemtime($FCache) < time()-$cache_time) { unlink($FCache); } } } closedir($dir); ?> Данный метод кеширования существенно снижает нагрузку на базу данных. К примеру у автора инструкции есть сайт на DLE с посещаемостью 70к+ в сутки, а благодаря файловому кешированию нагрузка на базу данных не превышает 70%. Без данного кеширования, при такой посещаемости, DLE просто ложил базу данных MySQL на выделенном сервере! В данном примере время жизни кеша 6 часов, оптимально для сайтов с посещаемостью более 50к. При этом кеш занимает на диске 2-3 гигабайта. Для сайтов с меньшей посещаемостью можно уменьшить время жизни кеша и соответственно уменьшится его размер на винчестере. | |
|
Всего комментариев: 0 | |