Техническое задание: Оптимизация производительности OpenCart 2.3
Описание проблемы
Сайт интернет-магазина испытывает высокую нагрузку на базу данных MySQL. Анализ показал, что основными источниками проблемы являются:
- Активность поисковых ботов (Яндекс, Google, Bing), которые массово выполняют тяжелые AJAX-запросы, связанные с модулем расширенной фильтрации товаров (Mega Filter). Это приводит к пиковым нагрузкам, особенно при операциях фильтрации и поиска.
- Ошибки в конфигурации сервера, отраженные в error_log. Наблюдаются дублирующиеся указания домашней директории для административной и фронтальной части, что вызывает парные вызовы скриптов и увеличивает нагрузку.
- Общее количество одновременных запросов к сайту достигает 80-100, что усугубляет ситуацию.
Задачи для выполнения
1. Защита от ботов и оптимизация фильтра
- Реализовать механизм ограничения или блокировки AJAX-запросов от известных поисковых ботов к ресурсоемким скриптам модуля фильтрации, не нарушая индексацию основных страниц.
- Проанализировать и оптимизировать SQL-запросы, генерируемые модулем Mega Filter (возможно, добавить индексы, кэширование или переписать проблемные участки кода).
- Рассмотреть возможность кэширования результатов фильтрации для снижения нагрузки на БД.
2. Исправление конфигурации сервера
- Проанализировать файлы конфигурации (например, .htaccess, конфиги веб-сервера и OpenCart) и исправить ошибки, ведущие к дублированию путей и парным вызовам скриптов.
- Убедиться в корректности указания корневых директорий для фронтенда и админ-панели.
3. Общая оптимизация MySQL
- Провести аудит медленных запросов (slow query log) и оптимизировать их.
- Проверить и настроить ключевые параметры сервера MySQL (буферы, кэши) в соответствии с текущей нагрузкой и доступными ресурсами сервера.
- Рекомендовать дополнительные меры по повышению отказоустойчивости и производительности.
Требования к результату
- Существенное снижение нагрузки на базу данных MySQL.
- Устранение ошибок в логах сервера.
- Сохранение полной функциональности сайта для реальных пользователей.
- Предоставление краткого отчета о проделанных изменениях и внесенных настройках.