Бормотухи.НЕТ

Вернуться   Бормотухи.НЕТ > Web-мастеру > DataLife Engine > Инструкции, модификации и статьи для DLE
Расширенный поиск

Инструкции, модификации и статьи для DLE Сборник инструкции, модов и статей по движку DataLife Engine

Ответ
 
Опции темы Поиск в этой теме
Старый 22.02.2010, 00:27 Вверх   #1
Коварный тип
 
Аватар для Serberg
Serberg вне форума
Доп. информация
Хорошо Файловое кеширование DLE [снижаем нагрузку на MySQL]

Файловое кеширование DLE [снижаем нагрузку на MySQL]

Нашел на нуледе очень интересную инструкцию, решил перекинуть сюда, авось пригодится. Автор инструкции: kodges

Инструкция по установке:
1. Создаем папку /engine/cache/all и ставим на нее права на запись (chmod 777 или 775 в зависимости от хостера).
2. Открываем index.php и редактируем:
Находим:

PHP код:
@session_start (); 
PHP код:
///////////////Файловое кэширование////////////// 
if($_SESSION['dle_user_id'] == && $_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; 
    } 

///////////////////////////////////////////////// 
Находим:

PHP код:
$tpl->compile 'main' ); 
Вставляем перед:

PHP код:
ob_start(); 
Находим:

PHP код:
GzipOut (); 
Вставляем после:

PHP код:
//////////Файловое кэширование////////// 
if($_SESSION['dle_user_id'] == && $_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 гигабайта. Для сайтов с меньшей посещаемостью можно уменьшить время жизни кеша и соответственно уменьшится его размер на винчестере.

Есть еще вариант очистки кэша, чтобы кеш можно было чистить вместе с остальным кешем нажатием кнопки в админке .

Для этого нужно
открыть ./engine/inc/main.php
найти там:

PHP код:
clear_cache();

и перед этим добавить:

PHP код:
///// ЧИСТИМ ФАЙЛОВЫЙ КЭШ /////

$fcachedirname ENGINE_DIR.'/cache/all';

if (
$objs glob($fcachedirname."/*")) {
foreach(
$objs as $obj) {
is_dir($obj) ? removeDirRec($obj) : unlink($obj);
 }
}
rmdir($fcachedirname);

@
mkdir (ENGINE_DIR.'/cache/all'0777);
@
chmod (ENGINE_DIR.'/cache/all/'0777);

//////////////// 
И в конце чтоб Вы поняли весь смысл сделанного, и почему я с такой радостью делюсь с Вами этим способом, немного простых цифр.
1.В тот же день посещаемость пробила 45к уников – новый рекорд этого сайта.
2.Одновременное пребывание пользователей на сайте зафиксировано 700, до этого был максимум 400.

Если у Вас есть сайт на DLE с посещаемостью более 30к – очень рекомендую этот метод. На версии 8.5 отлично все работает, другие версии не проверял, по идее будет работать на всех, но лучше обновиться до 8.5 и поставить хак:).

Насколько метод простой, настолько же он и эффективен.

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 30 сообщение(ий)):
У вас нет прав чтобы видеть скрытый текст, содержащейся здесь.

Последний раз редактировалось Serberg; 31.01.2011 в 18:38..
  Ответить с цитированием
Старый 31.01.2011, 13:19 Вверх   #2
Знаток
 
Аватар для Forum Bot
Forum Bot вне форума
Доп. информация
По умолчанию Модерация темы!

Эта тема была перенесена из раздела DataLife Engine.

Перенес: Serberg
  Ответить с цитированием
Ответ

Метки
dle, дле, нагрузка, оптимизация


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Вопрос] Какую нагрузку создает VB 3.8.5 и как уменьшить? zaren3000 vBulletin 3.х 30 03.09.2011 16:39
Кеширование шаблонов (vBulletin) Serberg Инструкции по vBulletin 4 16.05.2011 16:33
[Вопрос] MySQL Error No xak vBulletin 3.х 3 01.05.2010 00:01
Как сделать кеширование в самой джумле? Andrey0011 Joomla! 3 09.03.2010 17:24


Текущее время: 13:58. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2024, vBulletin Solutions, Inc. Перевод: zCarot
 

Время генерации страницы 0.13219 секунды с 12 запросами