Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

Дополнительный кэш для dle

Тема в разделе "Вопросы- ответы", создана пользователем MegaMonstr, 5 сен 2016.

05.09.16 в 20:06
30.07.20 в 10:20
48
6.260
0
  1. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Нашел на просторах интернета вот такой хак, дополнительное кэширование - файловое и через мэмкэш, со слов автора, очень сильно ускоряет работу сайта, себе установил, но есть одна проблемка, кэш работает только для не авторизированных пользователей, сайт начинает реально работать на много быстрее.

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

    В папке /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 часа.

    Всё! Наслаждаемся процессом

    А теперь вопрос к знатокам, данный кэш работает отлично, все нравиться, но единственный минус, когда ты авторизованный переходишь на страницу которая уже в кэше, то приходиться еще раз авторизоваться, и так постоянно. Может можно что то придумать?
     
  2. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Плохо, в том что вся страница идет в кэш для пользователя.
     
    • Согласен Согласен x 1
  3. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Есть вариант как это дело допилить?
     
  4. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Так в этом и суть этого метода
     
  5. romanbkn

    Команда форума VIP Кинотрафик v2

    Регистрация:
    14 авг 2015
    Сообщения:
    3.423
    Лучших ответов:
    0
    Рейтинги:
    +1.290 / 0 / -0
    каковы последствия?
     
  6. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Я имел ввиду вот это:
    А теперь вопрос к знатокам, данный кэш работает отлично, все нравиться, но единственный минус, когда ты авторизованный переходишь на страницу которая уже в кэше, то приходиться еще раз авторизоваться, и так постоянно. Может можно что то придумать?
     
  7. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Снизу уже написали.
     
    • Нравится Нравится x 1
  8. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Мне допустим не лень авторизироваться еще раз, но вот как быть с людьми которые к примеру захотят оставить коммент, он к примеру решит авторизироваться, зайдет на страницу, а его опять выкинет.

    В общем как я понимаю, не чего не придумать?
     
  9. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    По идеи нет, но если подумать может что-то и придумать можно
     
  10. Pavel

    Pavel Местный

    Регистрация:
    7 ноя 2015
    Сообщения:
    1.680
    Лучших ответов:
    0
    Рейтинги:
    +785 / 0 / -0
    Дичь какая то. Ставить кэш на 3 часа, а удаление кэша каждые 15 минут.

    Для удаления редких страниц - ставить раз в день и норм.
     
  11. Pavel

    Pavel Местный

    Регистрация:
    7 ноя 2015
    Сообщения:
    1.680
    Лучших ответов:
    0
    Рейтинги:
    +785 / 0 / -0
    Хотя глянул скрипт, там проверка времени жизни файла, но все равно дичь запускать каждые 15 минут.
     
  12. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    Нет, это для файлового кэша через 15 минут, а для mamcache через 2 часа, там он автоматически удаляет
     
  13. maxwellum

    maxwellum Бывалый

    Регистрация:
    15 июн 2015
    Сообщения:
    261
    Лучших ответов:
    0
    Рейтинги:
    +82 / 1 / -0
    Так в DLE, вроде, memcache кэширование уже реализовано.
     
  14. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Это дополнительный кэш
     
  15. Romantv

    Забанен

    Регистрация:
    17 июл 2015
    Сообщения:
    6.992
    Лучших ответов:
    6
    Рейтинги:
    +2.000 / 141 / -0
    стоит у меня такой. все нормально
     
  16. TopicStarter Overlay
    MegaMonstr

    Команда форума VIP Кинотрафик v2

    Регистрация:
    27 сен 2015
    Сообщения:
    1.078
    Лучших ответов:
    0
    Рейтинги:
    +317 / 12 / -0
    Не задраивает авторизироваться постоянно?
     
  17. Romantv

    Забанен

    Регистрация:
    17 июл 2015
    Сообщения:
    6.992
    Лучших ответов:
    6
    Рейтинги:
    +2.000 / 141 / -0
    нет. с админ панели не выкидывает. а на сайте не бываю
     
  18. PunPun

    VIP Кинотрафик v2

    Регистрация:
    11 июн 2015
    Сообщения:
    7.292
    Лучших ответов:
    31
    Рейтинги:
    +3.892 / 96 / -0
    а как админка и сайт связаны ? думаешь что пишешь то?))) там разные файлы и кэш только для сайта, естественно что с админкой ничего не будет)))00
     
    • Нравится Нравится x 1
  19. Romantv

    Забанен

    Регистрация:
    17 июл 2015
    Сообщения:
    6.992
    Лучших ответов:
    6
    Рейтинги:
    +2.000 / 141 / -0
    думаю,как есть так и пишу! я откуда знаю разные не разные кеши, был вопрос (Не задраивает авторизироваться постоянно?) я на него как есть так и ответил, а что разные кеш или не разные,вообще не знаю,и похер какой он там
     
  20. Intention

    Intention Местный

    Регистрация:
    15 янв 2016
    Сообщения:
    2.098
    Лучших ответов:
    0
    Рейтинги:
    +689 / 2 / -0
    Че за проблемас парни?
    Почему бы просто не отключить этот чудо кеш для пользователей?
    if( $_SESSION['dle_user_id'] == false && $is_logged == 0 && $_SERVER['REQUEST_METHOD'] == "GET" )
     
Яндекс.Метрика