Низкая скорость генерации страниц и значительное потребление оперативной памяти у тем дизайнов с огромным количеством настроек в theme.xml!
Вся проблема в постоянном парсинге массива <settings>...</settings> из файла theme.xml.
На теме Default, например, пустая страница /compare/ генерируется за 40-50 мсек и используется 4-5 МБайт оперативной памяти .
А на темах с большим кол-вом настроек(Mastershop, Megashop, Ahead etc) - за 80-120 мсек и используется уже 9-10 Мбайт оперативной памяти.
То есть разница в потреблении и скорости из-за постоянного парсинга в массив $theme_settings.
Настройки темы очень редко меняются - зачем постоянно парсить theme.xml.
Можно этот массив где-то кешировать и обновлять если только файл theme.xml был изменён?
Так можно было бы уменьшить потребление памяти на 3-4 Мбайта и увеличить скорость выполнения.
7 ответов
На счет уменьшения потребления памяти на 3-4 Мбайта - погорячился.
Там в итоге выходит только 800-1000 Кбайт после включения waSerializeCache.
Но и это уже значительная экономия )
Похоже, надо в этих огромных темах оптимизировать использование несколько сотен переменных (их там около 800-900 штук постоянно подгружается).
Можно удалить неиспользуемые узлы <(name|description|value) locale="en_US">
Проблема не столько в кол-ве переменных, сколько в их использовании, пример из темы Default:
ну и inline include без надобности.
У темы Default особых проблем со скоростью генерации нету.
Я говорил про проблемы у громоздких тем с большим кол-вом настроек.
А про include inline можете подробнее написать?
В справке smarty - об этой опции только одно предложение.
Частое использование inline отрицательно сказывается или наоборот?
если стоит inline, то шаблон рендерится как часть шаблона в который он включен, иначе он рендерится отдельно. в первом случае при изменении хотя бы одного шаблона все inline шаблоны рендерятся по новой, а во втором - только те, что изменены т.е. в разы быстрее.
так шаблоны редко редактируются.
можно это и не учитывать.
они же всё-равно потом в wa-cache помещаются.
ты путаешь компиляцию php кода из smarty шаблонов и собственно кеширование
на фоне громоздких тем - да, но готовые темы созданы для малого бизнеса - я не видел крупных магазинов на готовых темах из маркета, хотя бы без оптимизации/кастомизации