Оптимизация производительности сайта. Как избежать тормозов на сайте
Здесь мы собрали некоторые рекомендации, которые могут избежать возможных проблем с медленными запросами SQL, долгой загрузкой данных на страницах личных кабинетов.
Не нужно в табах (вкладках) грузить таблицы
Дело в том, что таблицы будут сразу подгружаться на странице. Т.е. человек может просмотреть только 1 вкладку, а грузятся все.
Решение - используются модальные таблицы. Модальные таблицы и формы грузятся только при клике на кнопку.
Медленное и тяжелое - в модальные таблицы или модальные формы
Есть таблицы, которые в любом случае затрагивают много ресурсов. Для таких таблиц используйте загрузку по требованию (модальные таблицы), также максимально уменьшите пагинацию (10-20).
Избегайте много подгружаемых данных через подзапросы
Контролируйте сложность подгрузки по полям в таблице. Не грузите очень много данных в строке таблицы, что требует загрузки данных через сложный подзапрос в SELECT.
Используйте подтаблицы, дополнительные формы.
Некоторые данные имеет смысл не вычислять каждый раз, а хранить как поле в таблице.
Избегайте постоянного пересчета данных (рейтинги, количество элементов, средний чек и др.)
Создайте поле у сущности (например, поле Рейтинг у пользователя), в котором будет храниться вычисленное значение.
Создайте функцию, которая будет пересчитывать для данного конкретного пользователя рейтинг dbo.updateUserRating(userID).
Вызывайте эту функцию в местах, которые приводят к изменению рейтинга (создание заказа, факт оплаты заказа и т.д.).
Таким образом вы сможете быстро получать список пользователей с сохраненными актуальными рейтингами, избежав при этом массовых сложных вычислений (когда для каждой строки таблицы пользователей выполняется большая и сложная процедура вычисления рейтинга).
Как решать проблему медленных страниц
Если таблица работает медленно - уберите все сложные элементы, добейтесь хорошей скорости и затем постепенно добавляйте обратно возможности в запрос (фильтрация, подзапросы, сортировки).
Сохраните начальный вариант, и начинайте массово все убирать - в компоненте это просто не выведется. Также используйте для этого Отладку с замером времени (кнопка Debug в окне редактирования SP).
Если вы пока не знаете какая страница вызывает торможение, то действуйте следующим образом:
- смотрим по as_perf проблемные запросы/ХП
- отключаем соответствующие компоненты (в GetItems: Select 1; return)
- добиваемся разгрузки системы
- постепенно добавляем обратно компоненты и анализируем загрузку
Понимание работы запроса изнутри
Хорошо представляйте как внутри работает запрос - так вы лучше будете понимать где и какие затруднения будут возникать у движка при выборке.
Используйте exec as_perf
Обязательно используйте as_perf для нахождения проблемных запросов.
Запрос проблемный, если он:
- потребляет много памяти
- долго выполняется
- потребляет много CPU
- создает дедлоки
- возвращает очень много строк (больше 300).
Если проблемный запрос найден - это половина решения.
Что можно сделать с проблемным запросом:
- отрезать медленную часть
- оптимизировать его загрузку с сохранением функций
- отключить совсем
- добавить индексы на задействованные таблицы
Google поиск по нашей документации
- Руководства
- Основа Falcon Space
- Основные компоненты
- Возможности
- Коммуникация с пользователем
- Дизайн, стилизация, юзабилити
- Лендинги
- Универсальный API
- Примеры интеграций
- Каталоги
- Навигация
- Документы
- Дополнительные компоненты
- Продвижение, SEO
- Системные моменты
- Системное администрирование
- HOWTO
- Таблицы
- Формы
- Загрузка файлов, картинок
- Работа с SQL SQL. Внутренние SQL функции и вспомогательные хранимые процедуры SQL. Как избежать проблем с именованием хранимых процедур. SQL. Отладка хранимых процедур и выявление причин ошибок SQL. Как указывать ссылки на страницы в SQL SQL. Интерфейс кабинета - это не методы репозитория CRUD! Системные SQL функции для диагностики Выполнение произвольных запросов SQL из личного кабинета администратора Оптимизация производительности сайта. Как избежать тормозов на сайте
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Выгода от использования Falcon Space
В 2-3 раза экономнее и быстрее, чем заказная разработка
Более гибкая, чем коробочные решения и облачные сервисы
Используйте готовые решения и изменяйте под свои потребности
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта