#metod4105¶
Оптимизация клиент-серверного взаимодействия прикладных решений¶
1.¶
Цель: обеспечить предсказуемую и быструю работу при обычных и низкоскоростных каналах связи.
2.¶
Оптимизируйте два показателя:
- количество серверных вызовов;
- объем передаваемых данных (трафик).
Даже при небольшом трафике большое число вызовов может заметно замедлять работу.
3.¶
Для анализа и контроля используйте три инструмента:
Показатели производительностив режиме1С:Предприятие;Замер производительностив конфигураторе;- режим
Имитация задержек при вызовах сервера.
Показатели производительности удобны для регулярного контроля в ходе разработки.
Замер производительности полезен для анализа конкретных строк модулей.
Имитация задержек помогает оценить комфортность пользовательских сценариев.
4.¶
Учитывайте, что итоговые показатели формируются совместно платформой и конфигурацией.
Платформа минимизирует нагрузку за счет следующих принципов:
- передает на клиент только нужные данные;
- по возможности передает данные «по требованию»;
- передает данные порциями;
- использует многоуровневое кеширование.
Эти принципы иногда противоречат друг другу, поэтому в реальных сценариях платформа применяет компромиссы.
4.1.¶
Упрощенно можно выделить уровни кеширования:
- между сеансами;
- в пределах сеанса;
- в пределах формы.
Из-за кеширования один и тот же сценарий может давать разные результаты при первом и повторном выполнении.
5.¶
Проводите проверки на реалистичных сценариях и объемах данных.
Например, табличную часть тестируйте на типичном и на редком «тяжелом» объеме строк.
5.1.¶
Используйте три уровня испытаний:
- первое действие после изменения конфигурации;
- первое действие в сеансе (когда в прошлых сеансах оно уже выполнялось);
- повторное действие в текущем сеансе.
Обычно наиболее важны уровни 2 и 3.
При ограниченном времени анализа приоритет чаще у уровня 3.
5.2.¶
Для уровня 3 повторяйте действие с новыми прикладными данными,
а не с полностью идентичными.
Так оценка ближе к реальной работе пользователей.
6.¶
Режим имитации задержек используйте отдельно от базовых проверок. Он нужен для оценки времени и удобства сценариев, а не для анализа числа вызовов.
Не путайте:
Низкая скорость соединения— меняет поведение платформы для медленных каналов;Имитация задержек— воспроизводит внешние условия работы канала.
7.¶
Интерпретируйте результаты аккуратно:
- часть вызовов инициирует код конфигурации;
- часть вызовов выполняет сама платформа вне кода модулей.
Полезные приемы анализа:
- сравнить сценарий с включенным фрагментом конфигурации и без него;
- сравнить показатели со «стендовой» конфигурацией на настройках по умолчанию;
- зафиксировать нормативы по критичным сценариям и отслеживать их в динамике.
8.¶
Ориентиры по числу вызовов (уровень 3; значения уровня 2 указаны в скобках,
если отличаются):
| Операция | Обычная скорость | Низкая скорость | Примечание |
|---|---|---|---|
| Переход на подсистему в панели разделов | 0 |
0 |
|
| Открытие списка справочника | 1 |
1 |
|
| Открытие формы выбора справочника | 1 |
0 (1) |
Повторное открытие формы выбора с теми же параметрами |
| Выбор из формы выбора справочника и закрытие формы выбора | 0 |
0 |
|
| Открытие формы элемента справочника | 1 |
1 |
|
| Закрытие формы элемента справочника | 0 |
0 |
|
| Запись и закрытие формы элемента справочника после редактирования | 2 |
1 |
Тест со закрытым списком справочника |
| Запись, проведение и закрытие формы документа после редактирования | 2 |
1 |
Тест со закрытым списком документов |
| Установка отбора в таблице, связанной с динамическим списком | 1 |
1 |
|
| Получение списка выбора при вводе по строке | 1 |
0 (1) |
Повторный ввод с теми же условиями поиска |
| Формирование отчета | 1 |
1 |
9.¶
При выработке решений по оптимизации задавайте два вопроса:
- можно ли убрать этот вызов;
- можно ли сократить объем передаваемых данных.
Типовые приемы:
- объединять несколько вызовов в один;
- исключать лишние вызовы;
- использовать повторно используемые возвращаемые значения там, где это оправдано.
Если цели оптимизации конфликтуют, выбирайте компромисс на основе замеров в максимально близком к эксплуатации стенде.
См. также¶
- #std487: Минимизация количества серверных вызовов и трафика
- #std628: Использование объекта ДанныеФормыКоллекция
- #std724: Использование модулей с повторным использованием возвращаемых значений
- #std459: Использование значений, влияющих на поведение клиентского приложения