Оптимизация производительности сайта. Как избежать тормозов на сайте
Здесь мы собрали некоторые рекомендации, которые могут избежать возможных проблем с медленными запросами 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 из личного кабинета администратора Оптимизация производительности сайта. Как избежать тормозов на сайте Как улучшить свой код - заметки по ревизии кода на платформе Falcon Space
- HOWTO JS
- HOWTO Верстка
- Решение проблем
Falcon Space
Это снижение стоимости владения
за счет меньшего количества людей для поддержки и узкого стека разработки. Про снижение стоимости владения продуктом
Это быстрое внесение изменений
по ходу эксплуатации программы. Как создается функционал на платформе
Это простой удобный интерфейс
адаптация под мобильные устройства. Про юзабилити платформы