Блог
Разработана система кэширования контент-блоков
Задача практического плана вышла на сайте нашего клиента Фонда содействия развитию спорта Баскет3000 basket3000.ru. В нашей системе составы команд хранятся как пользователи в системе. И вот настал момент когда количество перешло в качество, даже простые запросы выборки пользователей из базы данных приводят к большому времени отклика.
Списки спонсоров, партнеров и региональных баскетбольных организаций мы тоже сделали также, используя пользователей в группах. Для получения списка пользователей мы используем плагин системы user_list.
Вызов трёх плагинов подряд приводил к задержке в 9 секунд, а также к существенному замедлению работы соседних сайтов. Профилирование SQL-запросов не принесло существенного увеличения производительности сайта. Поэтому мы решили закешировать уже результат работы плагинов, чтобы каждый раз база данных не "дергалась". Результат контент-блока хранится в текстовом файле. Увеличение производительности составило 1000 раз.
Важную часть кеширования составляет система интеллектуального обновления кеша каждого контент-блока. Она включает в себя обновления по периоду, когда создатель сайта может задать период в секундах, минутах, часах, днях, а также по событиям.
Об обновлениях по событиям поговорим подробнее. В нашей системе управления сайтом InlifeCMS при добавлении, редактировании или удаления объекта модуль, который отвечает за данный объект, помещает в стек событий об измении объекта. Администратор сайта, зная содержимое контент-блока, и изменение каких объектов может привести к обновлению содержимого этого контент-блока, при включении кеширования указывает типы этих объектов, влияющих на этот контент-блок.
Делайте запрос на версию 1.6 модуля mod_content_blocks для получения возможностей кеширования контент-блоков.