Уменьшение нагрузки DLE

18

Уменьшение нагрузки DLE
Несомненно, каждому вебмастеру приятно смотреть, когда у его сайтов ежесуточная посещаемость измеряется не тысячами, а например десятками тысяч (лучше сотнями).  Но Вы не поверите, рост посещалки не всегда бывает в радость.

Как пример есть у меня один сайтец на dle, у которого база 1 гиг, кол-во новостей в базе 170к и когда ежесуточная посещаемость подходит к 40к, он начинает нагибать мускул и укладывает все в аут. При том что отключены все модули и хаки.  Если в районе 30к, то все отлично, как начинает расти посещаемость то дохнет мускул.  Апгрейд железа не помогает, ну во всяком случае сейчас DELL PE 2950,2 x Intel Xeon L5410,16 GB ECC RAM,6 x 73 GB SAS (RAID-10) если взять получше то до 70к можно будет протянуть агонию.

Так вот данная статья, о том, как с помощью простого метода данному сайту была дана новая жизнь, ах если бы я знал об этом методе раньше….

 

В первую очередь спасибо ресурсу Nulled.ws и непосредственно kodges за эту инфу.

Данный метод поможет Вам если у Вас ежесуточная посещаемость не менее 10-20к, если у Вас 40-50к то для Вас это уже критическая необходимость.
Если же у Вас пока еще молодой ресурс, то прост поубирайте календари, виевсы, выводы похожих новостей и нагрузка сразу уменьшиться.

Файловое кеширование 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))."<!-- 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 минут

 

<?
$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);
?>

Но я не люблю всякие кроны, поэтому на том же любимо нулледе подсмотрел следующее решение:

Чтобы кеш можно было чистить вместе с остальным кешем нажатием кнопки в админке .

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

clear_cache();

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

///// ЧИСТИМ ФАЙЛОВЫЙ КЭШ /////

$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 и поставить хак:).

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

SEO Философия от Bormaley: Творчество есть результат использования изученных характеристик.

 


Добавить комментарий


Защитный код
Обновить

« Пред.   След. »
Приснился сон, хочешь расшифровать сноведение сонник Юноны подскажет и поможет.
Questra Holdings atlantic global отзывы и кого обманули.


Каким будет My.com. от Mail.Ru Group Будущий международный проект Mail.Ru Group обещает быть интересным. Про некоторые подробности проекта стало известно....Readmore


LifeHack - взламываем мироздание


Магия чисел и помощь новичкам.

Вы знаете что математика, а если точнее - логике с математическим анализом подвластно все – на основании выборки данных по ...



ВКонтакт опять становятся жертвой кибермошенников

 Пользователи социальных сетей довольно часто попадают в лапы интернет-мошенников. В этот раз компания "Doctor Web"...



Теоретические seo вопросы


Как снизить стоимость посетителя на сайт?

Успех любого бизнеса напрямую зависит от эффективного использования его маркетингового бюджета. Учитывая, что уровень конкуренци...



Полезность StumbleUpon на примере!

Я уже неоднократно писал о данной социалке, в таких статях как: Рейтинг 30-ти самых крупных социалок ,где она кстати на 6 месте,...



Авторизация

Вход / Регистрация



Заработок в интернете — это не миф, а реальность, но работать для этого надо много и упорно. Есть ли заработок в интернете, нет ли заработка в интернете Вы не узнаете пока сами не начнете работать и зарабатывать в интернете.

Блог SEO Философа Bormaley

Twitter Bormaley

В SEO денег НЕТ

При цитировании и использовании любых материалов гиперссылка на сайт Bormaley.com обязательна. Републикация авторских материалов возможна только после письменного согласования.
0

Статистика