Кэширование запросов к базе данных

Когда у вас в интернет-магазине больше количество товаров (исчисляемое в десятках тысяч) запросы создают существенную нагрузку на базу данных, что выливается в снижение скорости загрузки страниц.

Чтобы снизить эту нагрузку применяется кэширование - хранение локально результатов наиболее тяжелых запросов к базе данных (в основном это запросы, порожденные фильтрами по характеристикам товаров) и обновление их с определенной периодичностью (например 1 сутки).

При этом динамически изменяемые данные (например, связанные с добавлением товаров в корзину и заказов) мы не кэшируем.

Как включить кэширование в 5CMS:

Админка -> Настройки -> Настройки каталога товаров

Кэширование запросов к базе данных

Рекомендуется выбрать Memcache (Естественно необходимо чтобы этот модуль PHP был установлен на хостинге. На нормальных хостингах и Memcache и Memcached установлены по умолчанию) и период 1 сутки.

Что дает кэширование?

1) Замерим скорость генерации страниц каталога на 23 тысячах товаров в базе данных:

Без кэширования:

  • page generation time, 0.24020375s

Тот же, но уже закэшированный запрос:

  • page generation time, 0.0104885s

Итого разница в 24 раза

2) Второй нюанс работы с нагрузкой на базу данных - это лимиты хостинга.

При определенной нагрузке сайт просто "ляжет".

Результаты нагрузочного тестирования на обычном виртуальном хостинге на самом дешевом тарифе при 100 одновременных пользователях в каталоге товара (23 тыс. товаров) на возрастающей нагрузке, использующих фильтр по характеристикам - это наиболее "тяжелые" запросы к базе данных:

"Доступность сайта за время тестирования. Вычисляется как отношение успешных ответов к ошибкам доступа. Сюда не включены ошибки таймаутов, проблем с DNS, или интернетом."

"Скорость загрузки всего сайта, включая все статические элементы, а также сторонние ссылки. Полностью эмулируют первую загрузку сайта из браузера посетителем."

"Среднее время ответа сайта на запросы или TTFB (Time To First Byte). Показывает, сколько понадобилось времени серверу, чтобы выдать данные посетителю после запроса."

Результаты нагрузочного тестирования 

Как видим ошибок нет - значит сайт не "лёг"

Нагрузочное тестирование

Время ответа сервера находится в пределах нормы данного хостинга.

Скорость загрузки - стабильна.

Теперь посмотрим на хостинг:

  • Нагрузка на БД за весь день тестирования составила 67 CP - это всего 2,7% от дневного лимита.

Т.е. можно сказать, что хостинг даже не ощутил нагрузки.

Кэширование запросов к базе данных в 5CMS

Еще нет своего сайта? Создайте интернет-магазин на платформе 5CMS - Все для продаж уже внутри!