MinifyX 1.3.0 работает очень медленно (1.2.2)

Обновил MinifyX с 1.2.2 до 1.3.0. Если раньше после очистки кэша modx и удаления всех созданных им минимизированных файлов обработка подключаемых файлов занимала 0,7 сек, то сейчас 3 сек.
С чем это связано?

1. С тем, что сейчас minifyX работает не со временем создания исходных файлов, а с хэшем их содержимого (читает содержимое всех подключаемых файлов + вычисляет хэш)?

2. Как отвязать minifyX от кэша modx? При каждом обновлении кэша modx (даже если не менять исходные файлы и не трогать сгенерированные минимизированные файлы) minifyX по новой отрабатывает 3 сек (полностью всё пересоздаёт).

Раньше при очистке кэша modx он ничего не пересоздавал. Да и минифицировал файлы за 0,7 сек.
Cyrax_02
01 июня 2014, 15:04
modx.pro
1 589
0

Комментарии: 10

Василий Наумкин
02 июня 2014, 08:26
0
Используй 1.2.2, если она больше нравится.
    Cyrax_02
    02 июня 2014, 11:11
    0
    Так в чём же причина?
    а) более долгой обработки
    б) связи с кэшем modx?
      Василий Наумкин
      02 июня 2014, 11:16
      0
      Без понятия, у меня всё по-прежнему быстро и никто больше на проблемы со скоростью не жаловался.

      После полного удаления /core/cache/ главная страница этого сайта генерируется за 1.0439 s
        Cyrax_02
        02 июня 2014, 14:08
        0
        Так причина перегенерации файлов при очистке кэша modx тоже неизвестна?

        у меня всё по-прежнему быстро
        Об этом можно судить только протестировав время для двух вариантов. Я протестировал. Время увеличилось в 4 раза. Уверен, что и у любого другого протестировавшего разница будет существенной.
    Cyrax_02
    02 июня 2014, 16:12
    0
    Понаблюдал. Что получается в версии 1.3.0:

    1. При пересоздании конечного минимизированного файла предыдущий файл не удаляется. Тем самым, папка будет быстро и бесконтрольно пухнуть.
    2. Конечный минимизированный файл пересоздаётся только в том случае, если меняется хэш содержимого минимизированного файла. Т.е. если изменить содержимое некоторого комментария исходного файла, то минимизированный файл пересоздаваться не будет, хотя исходный файл изменён. Логично.

    3. Если не очищать кэш modx, то конечный минимизированный файл в версии 1.3.0 пересоздаётся так же быстро, как и в версии 1.2.2.
    4. Если в версии 1.3.0 очистить кэш modx, то minifyX отрабатывает очень долго (в 10 раз дольше), не зависимо от того, пересоздаётся конечный минимизированный файл или нет.

    Возникает вопрос: что делает MinifyX 1.3.0 при очистке кэша modx ?

    У меня формируется 2 минимизированных файла (их размер различается в 10 раз):
    .css размером 20 Кб
    .js размером 200 Кб

    В версии 1.2.2 скорость формирования этих файлах такая:
    .css — x
    .js — 10х

    В версии 1.3.0 скорость отработки minifyX без очистки кэша modx (не зависимо от того, пересоздаются минимизированные файлы или нет):
    .css — x
    .js — 10х

    В версии 1.3.0 скорость отработки minifyX после очистки кэша modx (не зависимо от того, пересоздаются минимизированные файлы или нет):
    .css — x
    .js — 100х
    Т.е. здесь обработка .js выполняется уже в 100 раз дольше .css, хотя размер его в 10 раз больше .css

    Может, последняя версия munee при обработке .js-файлов выполняет ещё какую-то масштабную обработку? Причём эта дополнительная масштабная обработка выполняется только при очистке кэша modx. Если кэш modx не очищать, то даже при пересоздании минимизированных файлов MinifyX 1.3.0 отрабатывает быстро (как и 1.2.2).
      Cyrax_02
      04 июня 2014, 10:16
      0
      Вот эти 2 проблемы, имеющие место в MinifyX 1.3.0:
      а) старые минимизированные файлы не удаляются (накапливаются)
      б) после очистки кэша modx Minify очень долго работает (в 10 раз дольше), даже если при этом выходной файл НЕ пересоздаётся

      решил реализацией собственного управления выходным файлом:

      1. Самостоятельно проверяю необходимость пересоздания конечного минимизированного файла (если изменились исходные файлы)
      2. Если необходимо пересоздать, вызываю сниппет MinifyX
      3. После вызова MinifyX получаю имя сгенерированного минимизированного файла
      4. Переименовываю этот файл (без всяких хэшей в имени файла)
      5. Самостоятельно подключаю его на странице

      В результате, подключение css и js выполняется долго только при одновременном выполнении следующих условий:
      а) требуется создать (пересоздать) выходной минимизированный файл (изменились исходные файлы)
      б) был очищен кэш modx с момента последнего вызова MinifyX 1.3.0

      Во всех остальных случаях подключение css и js выполняется так же быстро, как и в версии MinifyX 1.2.2.
        Василий Наумкин
        04 июня 2014, 10:26
        0
        Обожемой!

        В версии 1.2.2 не очищается родной кэш munee, а в 1.3.0 — очищается. Вот и вся разница.

        Запись файлов и вычисление хэша на скорость практически не влияют, так что ты просто надстроил свой велосипед над моим.

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

        Как ни странно, я считаю, что если ты чистишь весь сайт, то кэш munee тоже должен удаляться.
          Cyrax_02
          04 июня 2014, 11:11
          0
          Вместо угадаек можно было открыть исходный код дополнения и посмотреть, что там и как работает.
          Копаться в исходниках munee? Ну уж нет. Чего он там делает при первом вызове после очистки кэша — это пусть остаётся на его совести. В любом случае, без корректировки исходников его поведение не изменить. Посему то, что я сделал — единственный вариант минимизации этих проявлений для текущей версии minifyX/munee.
            Василий Наумкин
            04 июня 2014, 11:22
            0
            Копаться в исходниках munee?
            Я ссылки дал на исходники MinifyX, а не munee. Плагин MinifyX удаляет директорию с кэшэм munee при очистке кэша всего сайта в админке. При первой генерации страницы munee заново генерирует свой кэш, и видимо это у тебя и тормозит.

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

            Поэтому, на мой взгляд, проблемы никакой нет. Если так сильно не нравится очистка кэша munee — закомментируй её в плагине, ссылка выше была уже дана.
              Cyrax_02
              04 июня 2014, 12:26
              0
              1. Да, если НЕ очищать кэш munee при очистке кэша modx, тормозов нет.
              2. Если вручную удалить кэш munee (.../core/cache/default/munee), получаем тормоза.
              3. Если оставить всю структуру папок и подпапок кэша munee, а кэш-файлы .css и .js из этих подпапок удалить, то по-прежнему наблюдаются тормоза.

              Вывод: большой расход времени — из-за пересоздания всех кэш-файлов при первом запуске munee.

              Вот сейчас всё понятно, откуда берутся цифры 0,2-0,7 сек (без очистки кэша modx) и 3-5 сек после очистки кэша modx. В первом случае обновляется только кэш одного файла (который изменился), во втором случае обновляются кэши всех файлов, которые передаются MinifyX/munee (их у меня 13 штук). Т.е. получаем разницу в 13 раз:
              [0,2-0,7 сек] * 13 = [3-5 сек]
              Всё сходится.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        10