Помогите пожалуйста доработать Jet Cache

Тема в разделе "Модули и дополнения", создана пользователем DiNoZavr, 21 авг 2017.

  1. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Сайт сильно тормозит, и до выявления причины, на форуме посоветовали заменить v2pagecache на Jet Cache, поскольку в этом модуле можно выбирать контроллеры, которые нужно кешировать, что я и сделал...
    Но оказалось, что идея модуля Jet Cache - хорошая,
    а вот реализация мягко говоря не очень...

    Суть в том, что поскольку сайт тормозит, то решил закешировать основные контроллеры, и запустил сканер для кеширования всех страниц, в результате сканер обходит 40 000 страниц, но оказалось что Jet Cache не хранит весь кэш, а удаляет их в зависимости от настроек кешера, т.е. если задать 1000, то при накоплении файлов в папке jetcache_cont_2_0_product_product более 1000, папка отчищается...

    Кто уже сталкивался с подобной проблемой, помогите изменить код, чтобы кэш хранился в пронумерованных папках...
     
  2. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Кеш генерят пользователи - туда куда ходят
    Если у вас 40k товаров не значит что на все страницы ходят пользователи в один момент
    Один пользователь заходит и уже 100500 получают кеш что он сгенерировал
     
  3. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Почему бы вместо споров, не добавить очевидно нужную функцию?
    При каком действии генерируется кеш, мне кажется известно всем на этом форуме...
    Согласен, не на все ходят клиенты, но на все ходят боты, а новые пользователь если решит пойти на несгенерированную страницу, то будет ждать 6-10 сек для генерации, и моя задача исключить такое, хотя бы до момента фиксации проблемы на сайте... Ваш модуль, для меня, это бюджетный и временный способ решить проблему...
    Я вас уже в л.с. поблагодарил за эту информацию, могу и здесь, мне не сложно, но если вы не издеваетесь, то тогда мне непонятно для чего эта информация? она А дублирует по смыслу первую строку, Б понята всем хотя бы на этом форуме...
     
  4. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
  5. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Так суть не в способое генерации, а в хранении кэша, у меня другая тоже известная программа для этого.
    Суть в том, что кэш в папке для карточек товара храниться всего 800-1000 файлов, если больше файлов, то папка автоматически отчищается...
    Не спорю, в настройках можно указать и 40 000, но в этом случаи загнется файловая система...
    Чтобы такого не было, я прошу у разработчика создавать папки с кешем, и пронумеровывать их, тогда можно в каждой папке хранить по 800-1000 файлов кеша, и не удалять по лимиту...
     
  6. Chukcha

    Chukcha Специалист

    Сообщения:
    3.013
    Симпатии:
    685
    так jet так и работает

    vq2 - в одну папку
     
  7. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Нет, не так, он автоматически отчищает папку: /system/storage/cache/seocms/jetcache_cont_2_0_product_product по достижению лимита, который указан в поле Максимальное количество файлов в папке кеша модуля:
    А вот v2pagecache как раз хранил верно...
     
  8. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Ладно, для тех кто натравливает "сканер" для генерации, хотя зачем это делать не понятно совершенно. Пользователи сами генерят кеш. Всего один раз один пользователь зашел и сгенерил
    Скачайте еще раз архив и обновите файлы на сервере
    Разделение по папкам хеша первые три символа добавлено
     
    DiNoZavr нравится это.
  9. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Теперь в /system/storage/cache/seocms/ создаются папки jetcache_cont_2_0_product_product_xxx их очень много, к примеру за 20 минут работы скарнера, появилось 700 папок, думаю по завершению их будет примерно 7-8 тыс...
    В каждой папке 5-6 кеш файла.
    Не лучше ли в папках хранить больше файлов, допустим 700-800 файлов в каждой папке, тогда папок будет меньше...
     
  10. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Нет надо знать четкий путь файла для быстроты без лишних условия и подсчетов
    Скачайте еще раз
     
  11. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    По какой-то неизвестной мне причине, при достижении неопределенного количества папок, старые папки параллельно с созданием новых удаляются...

    т.е. предыдущая версия была полезнее, она хоть и создавала много папок, но хранила ВЕСЬ кэш...
    Просьба исправить, или пояснить с чем это связано...

    т.е. если в настройках Уровень папок в кеше указано 2, то папок максимум 256, а в каждой папке в среднем 20 файлов, и не имеет значение сколько страниц обошел сканер, от количества обработанных страниц количество файлов не меняется :rolleyes:

    Думаю правильно сделать так.
    В настройках указываем сколько файлов можно хранить в каждой папке.
    Ну и если вам нравится непонятная настройка Уровень папок в кеше, то можно и оставить, просто думаю логичнее, когда папки с кеш файлами, создаются по мере необходимости, а не в каждой папке по 5-20 файлов... и потом наугад добавляются файлы в уже созданные папки...
    Ну и настройка не удалять кэш автоматически - тоже не помешала бы,

    выбрав который отпадет необходимость заполнять:
    Время жизни кеш файла модуля (в секундах)
    Максимальное количество файлов в папке кеша модуля
    Максимальный размер кеш файла модуля (в байтах)
    Автоматическое очищение всего кеша (в часах)

    p.s. Сейчас я начал сканировать сайт, первая папка с кешэм в jetcache_cont_2_0_product_product появилась в 02:46, сейчас если сделать сортировку по дате, получается что первая папка была создана в 03:04, соответственно остальные папки удалены...
     
    Последнее редактирование: 25 авг 2017
  12. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Нет, не удаляются если сами не удалили кеш
    Удаляется кеш и при изменении настроек модуля, не забывайте
     
  13. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Сам не удаляю, проверьте пожалуйста перед тем как говорить... Однозначно удаляются...
     
  14. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Проверил, все работает корректно
    Удаляется кеш и при изменении настроек модуля, не забывайте
    И нет смысла делать перерасчет количества файлов и папках (операция glob очень напрягает сервер) чтобы по истечении количества создавать папку другую... да и потом встает вопрос где хранить путь к папкам и т п
    Т е с точки зрения ресурсов крайне не выгодно
     
  15. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Настройки с ночи не изменял, а после последних изменений удалил кэш, и обновил модификаторы.

    Без имени-1.jpg
    Сейчас уже 11:58, т.е. меня в этом время не было перед компьютером, папки однозначно удаляются.
     
  16. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Для информации
    Папки вообще не удаляются ;)
    При достижении количества файлов в папке или размера файла кеша - удаляются ФАЙЛЫ в папке, но не папка
    Папки удаляются только реагируя на настройку очистки всего кеша после определенного количества часов
    Тогда удаляется весь кеш вместе с папками
     
  17. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Папки удаляются!
    Скриншот же прикрепил, мне смысл придумывать?
     
  18. markimax

    markimax Активный пользователь

    Сообщения:
    210
    Симпатии:
    34
    Код:
    public function construct_cache() {
            $asc_construct_cache = $this->registry->get('asc_construct_cache');
            if (!isset($asc_construct_cache[$this->dir_cache])) {
                $exceptionizer = new PHP_Exceptionizer(E_ALL);
                 try {
                    $files = glob($this->dir_cache . 'cache.*');
                    if ($files) {
                        clearstatcache();
                        $count_files = count($files);
                        foreach ($files as $file) {
                            $time      = substr(strrchr($file, '.'), 1);
                            $file_size = @filesize($file);
                            if (@file_exists($file)) {
                                if ($time < time() || $count_files > $this->max_files || $file_size < 0 || $file_size > $this->maxfile_length) {
                                    @unlink($file);
                                }
                            }
                        }
                    }
                    $asc_construct_cache[$this->dir_cache] = true;
                    $this->registry->set('asc_construct_cache', $asc_construct_cache);
                  }  catch (E_WARNING $e) {
                       return false;
                }
            }
        }
    if ($time < time() || $count_files > $this->max_files || $file_size < 0 || $file_size > $this->maxfile_length) {
    @unlink($file);
    }

    ;)
     
  19. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Это очень печально, что вы издеваетесь на своими клиентами, но если бы я понимал в том, что вы мне показали, то наверное не стал бы вашим клиентом...

    Папки удаляются, я могу вам чуть позже сделать еще один скриншот, и вы увидите что время первой созданой папки уже будет другой!
     
  20. DiNoZavr

    DiNoZavr Пользователь

    Сообщения:
    136
    Симпатии:
    10
    Даже по времени создания jetcache_cont_2_0_product_product видно, что кэш после 03:40 не удалялся...
     

    Вложения: