1/3
Нашел на просторах интернета вот такой хак, дополнительное кэширование - файловое и через мэмкэш, со слов автора, очень сильно ускоряет работу сайта, себе установил, но есть одна проблемка, кэш работает только для не авторизированных пользователей, сайт начинает реально работать на много быстрее.
Файловое кэширование:
В папке /engine/cache/ создаем папку fcache и ставим на нее права 777
Все. Теперь у вас в папке /engine/cache/fcache/ будет накапливаться кэш при каждом посещении сайта не зарегистрированным юзером, (гостем).
3600*3 — означает что время жизни кэша 3 часа. По истечении которого кэш будет перезаписан.
Но, для того чтобы кэш редко открываемых страниц не копился и не забивал вам диск, создаем следующий скрипт в корне сайта и ставим в кроне на выполнение его каждые 15 минут например.
Например файл clear.php
А теперь товарищи самое интересное и вкусное )))
Вариант кэширования с использованием memcached.
Открываем index.php, находим:
3600*2 это время жизни кэша, 3600 секунды это 1 час, умножаем 3600 на 2 получается время жизни 2 часа.
Всё! Наслаждаемся процессом
А теперь вопрос к знатокам, данный кэш работает отлично, все нравиться, но единственный минус, когда ты авторизованный переходишь на страницу которая уже в кэше, то приходиться еще раз авторизоваться, и так постоянно. Может можно что то придумать?
Файловое кэширование:
В папке /engine/cache/ создаем папку fcache и ставим на нее права 777
Код:
Найти в index.php
define ( 'DATALIFEENGINE', true );
Выше добавить
////////////////////////////////////Файловое кэширование/////////////////////////////////////
if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
{
$fcache = $_SERVER['DOCUMENT_ROOT'] . '/engine/cache/fcache/' . md5( $_SERVER['REQUEST_URI'] ) . '.html';
if ( file_exists( $fcache ) && filemtime( $fcache ) > time() - 3600*3 ) exit( file_get_contents( $fcache ) );
}
/////////////////////////////////////////////////////////////////////////////////////////////
Находим в файле /engine/modules/main.php - в самом низу
GzipOut();
Вставляем выше:
///////////////////////////////Файловое кэширование//////////////////////////////
if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
file_put_contents( $fcache, ob_get_contents() );
/////////////////////////////////////////////////////////////////////////////////
Все. Теперь у вас в папке /engine/cache/fcache/ будет накапливаться кэш при каждом посещении сайта не зарегистрированным юзером, (гостем).
3600*3 — означает что время жизни кэша 3 часа. По истечении которого кэш будет перезаписан.
Но, для того чтобы кэш редко открываемых страниц не копился и не забивал вам диск, создаем следующий скрипт в корне сайта и ставим в кроне на выполнение его каждые 15 минут например.
Например файл clear.php
Код:
<?php
$cache_time = 3600*3+60; // время жизни кэша + 60 секунд.
$dir = "/var/www/username/data/www/site.ru/engine/cache/fcache/"; // абсолютный путь до папки с кэшем
echo "site.ru: "; // домен вашего сайта
//==========================Очистка устаревшего файлового кэша============//
$del = 0;
$fdir = opendir( $dir );
while( ( $file = readdir( $fdir ) ) !== false )
{
$filetype = explode( '.', $file );
$type = array_pop( $filetype );
$fcache = $dir . $file;
if ( $type == 'html' AND file_exists( $fcache ) AND filemtime( $fcache ) < time() - $cache_time )
{
$del++;
unlink( $fcache );
}
}
closedir( $fdir );
echo $del . " files deleted \n\r";
//========================================================================//
?>
А теперь товарищи самое интересное и вкусное )))
Вариант кэширования с использованием memcached.
Открываем index.php, находим:
Код:
define ( 'DATALIFEENGINE', true );
Вставляем выше:
////////////////////////////////Кеширование в Memcached ///////////////////////////////////////////
if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
{
$memcache = memcache_connect( 'localhost', 11211 );
$memkey = md5( $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] );
$mempage = memcache_get( $memcache, $memkey );
if( $mempage ) exit( $mempage );
}
///////////////////////////////////////////////////////////////////////////////////////////////////
Находим:
GzipOut ();
Вставляем выше:
////////////////////////////////Кеширование в Memcached ///////////////////////////////////////////
if( $_SESSION['dle_user_id'] == false && $_SERVER['REQUEST_METHOD'] == "GET" )
{
memcache_set( $memcache, $memkey, ob_get_contents(), MEMCACHE_COMPRESSED, 3600*2 );
memcache_close( $memcache );
}
///////////////////////////////////////////////////////////////////////////////////////////////////
3600*2 это время жизни кэша, 3600 секунды это 1 час, умножаем 3600 на 2 получается время жизни 2 часа.
Всё! Наслаждаемся процессом
А теперь вопрос к знатокам, данный кэш работает отлично, все нравиться, но единственный минус, когда ты авторизованный переходишь на страницу которая уже в кэше, то приходиться еще раз авторизоваться, и так постоянно. Может можно что то придумать?