При переходе на управляемые формы многие компании сталкиваются с неприятным сюрпризом: на мощном серверном оборудовании, где тонкий клиент и терминальный доступ (RDP) буквально «летают», работа пользователей через обычный браузер (веб-клиент) превращается в мучение. Формы открываются с задержкой в несколько секунд, ввод данных зависает, а интерфейс кажется неотзывчивым.
В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем разницу между веб-клиентом и тонким клиентом, работающим через веб-сервер, а также предоставим детальные инструкции по оптимизации веб-сервера и клиентских мест.
Для начала проанализируем реальный опыт использования различных типов подключения. Если ранжировать способы работы с базой данных 1С по скорости реакции интерфейса (от самого быстрого к самому медленному), мы получим следующую картину:
Разберем подробнее, почему веб-клиент в браузере проигрывает нативному тонкому клиенту, даже если они обращаются к одному и тому же веб-серверу.
Главная причина медлительности веб-клиента кроется в технологии реализации управляемого интерфейса 1С в интернет-браузерах.
Когда мы запускаем базу через веб-клиент, в качестве среды исполнения (рантайма) используется интерпретатор JavaScript самого браузера. Платформа 1С «на лету» транслирует встроенный язык управляемых форм в тяжеловесный JavaScript-код. Большинство проблем с отзывчивостью интерфейса Такси связаны именно с необходимостью обеспечения совместимости со стандартами веб-браузеров.
В отличие от веб-клиента, настоящий тонкий клиент 1С, даже подключаясь по той же самой веб-ссылке к Apache или IIS, использует собственные скомпилированные функции рантайма на C++. Они оптимизированы под конкретную операционную систему, работают напрямую с памятью ПК и не зависят от ограничений движка JavaScript в браузере. Именно поэтому тонкий клиент выигрывает по скорости реакции интерфейса более чем в 2 раза.
Если для вашей организации критична скорость потокового ввода данных (работа операторов, менеджеров по продажам, бухгалтеров), лучшим решением будет полный отказ от использования веб-клиента в браузере в пользу тонкого клиента, подключающегося по HTTP-ссылке.
При таком подходе база данных остается опубликованной на веб-сервере (Apache или IIS). Это позволяет работать из любой точки мира без VPN и сложных настроек маршрутизации, но пользователи запускают на своих компьютерах локальное приложение 1С.
Рассмотрим, как настроить такое подключение:
http://mycompany.ru/accounting).Для того чтобы администратору не приходилось вручную устанавливать и обновлять платформу на десятках клиентских машин, применим хитрость — запуск тонкого клиента из общего сетевого ресурса. Создадим на сервере общий сетевой каталог (шару), куда скопируем установленные файлы платформы, и пропишем на рабочих столах пользователей ярлык для запуска исполняемого файла 1cv8c.exe непосредственно из сети. Платформа также поддерживает групповые политики Active Directory для централизованного развертывания.
Если отказаться от браузеров невозможно (например, к базе подключаются внешние контрагенты или сотрудники на личных устройствах), нам потребуется выжать максимум из веб-сервера. Разберем настройки популярного веб-сервера Apache.
Откроем конфигурационный файл httpd.conf в текстовом редакторе и внесем следующие изменения:
1. Настройка Keep-Alive соединений. По умолчанию Apache может закрывать TCP-соединение слишком быстро. Поскольку веб-клиент постоянно шлет мелкие запросы, постоянное пересоздание сетевых сессий приводит к колоссальным задержкам. Настроим параметры удержания соединения:
KeepAlive On
MaxKeepAliveRequests 10000
KeepAliveTimeout 15
2. Включение сжатия данных (Gzip / Deflate). Веб-клиент передает огромные JS-скрипты интерфейса. Без сжатия они сильно забивают канал передачи данных. Активируем модули сжатия контента. Убедимся, что раскомментированы строки загрузки модулей:
LoadModule deflate_module modules/mod_deflate.so
LoadModule filter_module modules/mod_filter.so
И добавим правила сжатия для типов данных 1С:
<IfModule mod_deflate.c>
SetOutputFilter DEFLATE
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json application/xml
</IfModule>
3. Переход на протокол HTTP/2. Современный протокол HTTP/2 позволяет передавать множество запросов параллельно по одному сетевому соединению (мультиплексирование). Это кардинально ускоряет загрузку сложных форм Такси. Для работы HTTP/2 на Apache потребуется настроить SSL-сертификат (HTTPS) и добавить модуль:
LoadModule http2_module modules/mod_http2.so
Protocols h2 h2c http/1.1
Файл default.vrd находится в каталоге физического размещения публикации нашей базы на сервере. В нем содержатся настройки пула соединений между веб-сервером и кластером серверов 1С. Неоптимальный пул приводит к тому, что при кратковременном бездействии пользователя его соединение «засыпает», а последующий клик вызывает долгую инициализацию.
Откроем файл default.vrd и отредактируем параметры тега <pool> внутри секции <point>:
<pool size="20"
maxAge="900"
attempts="3"
serverPingPeriod="10"
serverPingTimeout="5"/>
Разберем, за что отвечают эти параметры:
size — задает оптимальный размер пула соединений к рабочим процессам 1С.maxAge — время «жизни» неиспользуемого соединения в секундах до его уничтожения.serverPingPeriod — интервал времени, через который веб-сервер проверяет активность соединения, не давая ему преждевременно закрыться.Скорость работы веб-клиента на 50% зависит от производительности компьютера самого пользователя и настроек его интернет-браузера. Проанализируем рекомендации по настройке клиентских машин:
Если конфигурация 1С содержит кастомные доработки, веб-клиент сразу проявит все ошибки неоптимального программирования. Нам необходимо оптимизировать код по следующим направлениям:
&НаСервереБезКонтекста создайте одну, которая вернет все необходимые данные в одной структуре за один проход.