Несомненно, каждому вебмастеру приятно смотреть, когда у его сайтов ежесуточная посещаемость измеряется не тысячами, а например десятками тысяч (лучше сотнями). Но Вы не поверите, рост посещалки не всегда бывает в радость.
Как пример есть у меня один сайтец на 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; } } /////////////////////////////////////////////////
После этих манипуляций в папке /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);
И в конце чтоб Вы поняли весь смысл сделанного, и почему я с такой радостью делюсь с Вами этим способом, немного простых цифр.
1.В тот же день посещаемость пробила 45к уников – новый рекорд этого сайта. 2.Одновременное пребывание пользователей на сайте зафиксировано 700, до этого был максимум 400.
Если у Вас есть сайт на DLE с посещаемостью более 30к – очень рекомендую этот метод. На версии 8.5 отлично все работает, другие версии не проверял, по идее будет работать на всех, но лучше обновиться до 8.5 и поставить хак:).
Насколько метод простой, настолько же он и эффективен.
SEO Философия от Bormaley: Творчество есть результат использования изученных характеристик.