Блог

Разработана система кэширования контент-блоков

Задача практического плана вышла на сайте нашего клиента Фонда содействия развитию спорта Баскет3000 basket3000.ru. В нашей системе составы команд хранятся как пользователи в системе. И вот настал момент когда количество перешло в качество, даже простые запросы выборки пользователей из базы данных приводят к большому времени отклика.

Списки спонсоров, партнеров и региональных баскетбольных организаций мы тоже сделали также, используя пользователей в группах. Для получения списка пользователей мы используем плагин системы user_list.

Вызов трёх плагинов подряд приводил к задержке в 9 секунд, а также к существенному замедлению работы соседних сайтов. Профилирование SQL-запросов не принесло существенного увеличения производительности сайта. Поэтому мы решили закешировать уже результат работы плагинов, чтобы каждый раз база данных не "дергалась". Результат контент-блока хранится в текстовом файле. Увеличение производительности составило 1000 раз.

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

Об обновлениях по событиям поговорим подробнее. В нашей системе управления сайтом InlifeCMS при добавлении, редактировании или удаления объекта модуль, который отвечает за данный объект, помещает в стек событий об измении объекта. Администратор сайта, зная содержимое контент-блока, и изменение каких объектов может привести к обновлению содержимого этого контент-блока, при включении кеширования указывает типы этих объектов, влияющих на этот контент-блок.

 

Делайте запрос на версию 1.6 модуля mod_content_blocks для получения возможностей кеширования контент-блоков.

Коленько Сергей