• Автор:

    Flesha
  • Добавлено:

    ноя 26, 2010
  • Комментариев:

    0
  • Просмотров:

    1 795

Файловое кеширование

Файловое кеширование

Инструкция по установке:
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))."<!-- use cache -->";
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 гигабайта. Для сайтов с меньшей посещаемостью можно уменьшить время жизни кеша и соответственно уменьшится его размер на винчестере. dle
Вернуться
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.