Быстродействие системы
Материал из Umicms
Актуально для версии 18.
В данной статье будут описаны некоторые рекомендации, которые позволят ускорить работу сайта, снизить нагрузку на сервер.
Базы данных и кеширование
- С осторожностью используйте такие встроенные в систему кеширующие механизмы, как "Файловая система" и "Статический кэш". На некоторых сайтах, быстродействие системы может даже снизиться при использовании данных кэшей. Многие хостинги предоставляют кэширующие механизмы, которые мы смело рекомендуем, одни из них это: Redis, memcache и memcached. При использовании данных кеширующих механизмов снижается нагрузка на сервер, уменьшается количество запросов к базе данных, сайт начинает работать быстрее и стабильней.
- Если в модуле Конфигурация в разделе Производительность наблюдаются высокие показатели load average, то для разъяснения ситуации необходимо обратиться в техподдержку хостинг-провайдера. Возможно сайт расположен на загруженном сервере.
- Иногда в базе данных могут скапливаться данные которые необходимо очистить и если их накапливается много, то это может повлиять на производительность системы. Для очистки базы данных рекомендуем настроить cron. Так же можно написать в Службу Заботы с просьбой почистить базу данных от "мусорных" объектов, таких как брошенные корзины и элементы заказа, не содержащиеся ни в одном заказе. Перед чисткой проверьте наличие полного актуального дампа базы данных, сделанного не средствами UMI.CMS. Дамп необходим для страховки на случай непредвиденных ошибок.
Оптимизация макросов
- Можно посмотреть стек вызова макросов и время их выполнения добавив к адресу сайте параметр ?showStreamsCalls=1 и на основе этих данных оптимизировать шаблон сайта.
- Если на сайте используются макросы content menu() для построения меню, которые практически никогда не будут измениться, то имеет смысл прописать данные блоки статически, т.е. прописать html код блока, который формируется макросом menu()
- У макроса news lastlist(), есть шестой параметр SkipOrderByTime, который позволяет отключить сортировку новостей по полю Дата публикации. В данной сортировке, в большинстве случаев, нет необходимости, т.к. без нее новости будут выводиться в том порядке, в котором они расположены в административной части, в ленте новостей. Необходимая сортировка создается при добавлении новости, самая последняя добавленная новость отображается в начале списка. Параметр SkipOrderByTime необходимо устанавливать =1.
- Будьте внимательны при использовании макроса system getOuterContent(), в некоторых случаях он может выполняться слишком долго, в таком случае код необходимо подключать напрямую в шаблон, либо с помощью кастомного макроса. Без опаски, можно использовать этот макрос при подключении TPL-шаблонов: header и footer.
- При использовании макроса emarket price(), есть смысл установить третий параметр =0, тогда макрос будет выдавать цену только в текущей валюте сайта, а не сразу во всех зарегистрированных в модуле Emarket, вкладка Валюты. Т.к. часто бывает, что на одной странице отображается 20-30 товаров, исключение из обработки ненужных данных, цен в других валютах, является значимым действием при оптимизации сайта.
- При использовании XSL-шаблонов, результат работы макросов и протоколов, т.е. XML-данные, можно закэшировать, для этого необходимо к запросу добавить GET параметр с name = expire, а значением будет являться время хранения кэша в секундах. Для некоторых макросов можно поставить время равное одному часу (в секундах), для другого можно и целые сутки, по прошествии указанного время происходит обновление кэша.
Старые версии
- Рекомендуем обновить версию системы до актуального значения, предварительно необходимо сделать полные бекап файлов и дамп базы данных, не средствами UMI.CMS.
- Если на сайте не используются данные, собираемые модулем Статистика, то отключение сбора статистики, в настройках модуля, существенно снизит нагрузку на сервер. Модуль собирает очень большой объем статистических данных, происходит достаточно большое количество запросов к базе данных. Возможен вариант, когда модуль включается лишь на время, для сбора облака тэгов, потом сбор данных можно отключить. Для сбора статистики можно использовать сторонние сервисы (например, Яндекс.Метрику) — это позволит меньше нагружать базу данных.