Как ускорить панель управления в ZOO?

10.0/10 оценка (5 голосов)

Знакома ситуация? Жмешь в админке сохранить, а червяк все крутится и крутится. Напрягает...

Казалось бы — зачем мучиться? Закомментируй пару строчек и раздражения как не бывало. Все летает. Счастье, радость, единороги:)

Как ускорить панель управления в ZOO?

Вот вы под какой операционкой сидите? Если это Linux, то все отлично. Если Windows, то наверно замечали ощутимые тормоза. А задумывались, почему так?

Ищем узкое место

Обычно я веду разработку под Linux или vbox, поэтому, в силу этих фактов, редко обращал внимание на скорость админки под Win. С недавнего времени стал чаще пользоваться продуктами мелкомягких.

Обратил внимание, что сайт на локале тормозит ну оооочень сильно. Причем не просто сильно, а целых 1.5 секунды вместо привычных 0.5 (или 0,15 на линуксе)! WTF?

 

 

Я полез ковыряться, чтобы найти корень зла. Через 15 минут я обнаружил такой вот кусок кода:

Узкое место кода

Лежит он по этому пути: administrator/components/com_zoo/zoo.php

Здесь мы видим 3 фрагмента:

  1. Проверка обновлений ZOO
  2. Проверка зависимостей между расширениями
  3. Проверка что media доступен для записи.

Первые два пункта тормозят систему, но не существенно. А последний — это бомба!

Количество файлов и папок в проекте ZooСкрипт проходит по ВСЕМ файлам из директории media/zoo и проверяет КАЖДУЮ директорию и файл на возможность записи. Теперь посмотрим, сколько файлов и папок в минимальной сборке. Около 1000.

Выходит, что более 1000 заведомо медленных операций. Ситуация усугубляется тем, что все миниатюры после ресайза компонент ZOO хранит именно в папке media (кажется они это сделали в версии 3.3.6).

О, YOOtheme! Такой причуды мы от тебя не ждали!

Обычно они пишут код качественно, а тут их программист встал не с той ноги. В итоге, чем больше у нас картинок, элементов, каталогов и прочих расширений тем медленнее ЛЮБАЯ страница ZOO в админке.

Но для чего же YOOtheme написали эти строки?

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

Тестируем…

Комплектация компьютера, на котором проводились измеренияЯ закомментировал только проверку на запись, и получил +1.0 секунды скорости в админке ZOO под Windows. Это притом, что у меня довольно мощный компьютер и SSD.

Т.е админка ускорилась аж в 3 раза!

Вот такие показатели скорости были до комментирования:

Скорость до оптимизации

Такие стали после:

Скорость после оптимизации

Теперь посмотрим что с Linux. Я закомментировал эти строки на демо-сайте (под debian), скорость админки увеличилась всего на 0.2 сек. Мелочь, а приятно.

А вот что пишут те, кто прочитал эту тему в нашем сообществе и попробовал на себе:

Отзывы об ускорении от разработчиков

Так все-таки, почему сайты тормозят под Windows?

Самое медленное место в любом компьютере — это его файловая система, а точнее система ввода-вывода. И несмотря на то, что недавно произошла революция с SSD-дисками, оперативная память и процессор все равно будут в сотни раз быстрее.

Если мы посмотрим на это с точки зрения сайта, то увидим тысячи (а то и десятки тысяч) мелких файлов. И для рендеринга одной страницы PHP вынужден напрягать нашу файловую систему, т. к. должен проверять, читать, записывать мелкие файлы. К сожалению, файловая система NTFS работает быстро только с относительно большими файлами (1–2 МБ и больше). Этого вполне хватает, чтобы раскладывать фоточки котиков по папкам.

Почему так происходит? У NTFS есть масса фич, таких как аудит, права доступа, безопасность, защита данных, защита от сбоев и т. д. Любой запрос, будь то на чтение или запись, будет вынужден пройти все эти подсистемы. В Linux ПО для работы с файлами устроено совершенно иначе. Более того, вся операционка состоит из огромного количества мелких файлов. Соответственно, там нет таких проблем изначально.

В довесок ко всему помним, что под Windows мы используем портированный софт, который изначально был написан для Linux. Такой софт умеет работать в Windows, но явно не предназначен для этого. Поэтому, под Windows вас не спасет даже RAM-диск (проверено), который в десятки раз быстрее SSD.

Я уж не говорю про антивирусы, которые проверяют любые поползновения в файлах… И это, конечно, хорошо, но накладывает проблему производительности.

Примечание:

Все проверялось на последнем ZOO 3.3.15, но думаю это старый баг.

JBZoo и его версия вообще не имеет никакого отношения к происходящему, т. к. выполняется намного позже инициализации компонента.

А как у вас изменилась скорость после комментирования этих строк?

10.0 1515
Скорость
  • CB9TOIIIA
    25 Апрель 2016 at 18:12
     ↑  +1  ↓  Ответить

    На продакшн (linux) не стал трогать - там VDS - и права бывают чудят.

    На локалке отлично :)

  • Светлана
    Светлана
    27 Апрель 2016 at 20:13
     ↑  0  ↓  Ответить

    А у меня в файле zoo.php вообще нет этих строк...

    • SmetDenis
      SmetDenis (admin)
      27 Апрель 2016 at 20:15
       ↑  +4  ↓  Ответить

      Возможно вы не тот файл смотрите - administrator\components\com_zoo\zoo.php (компонент ZOO именно в папке "administrator")

      • Светлана
        Светлана
        27 Апрель 2016 at 20:32
         ↑  0  ↓  Ответить

        Так точно! Спасибо, Денис!

  • flart
    flart
    01 Май 2016 at 04:05
     ↑  0  ↓  Ответить

    Огромное спасибо за данный пост!)

  • Аноним
    Аноним
    09 Июнь 2016 at 14:16
    Ваш комментарий ожидает модерации.
     ↑  0  ↓  Ответить

    Подскажите как закомментировать эти строки?

  • Max
    Max
    09 Июнь 2016 at 14:17
     ↑  0  ↓  Ответить

    Подскажите как закомментировать эти строки?

  • Алексей
    15 Август 2016 at 11:57
     ↑  +1  ↓  Ответить

    На win стало работать примерно в два раза быстрее.

    Я думаю это зависит от конфигурации компьютера, но у меня перезагрузка страниц в админке всегда была 2 сек. сейчас 1 сек. Круто !

Оставить комментарий