Почему веб-клиент 1С работает медленно и как ускорить работу пользователей через веб-сервер

Системный администратор 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на управляемые формы многие компании сталкиваются с неприятным сюрпризом: на мощном серверном оборудовании, где тонкий клиент и терминальный доступ (RDP) буквально «летают», работа пользователей через обычный браузер (веб-клиент) превращается в мучение. Формы открываются с задержкой в несколько секунд, ввод данных зависает, а интерфейс кажется неотзывчивым.

В этой статье мы подробно разберем, почему возникает эта проблема, проанализируем разницу между веб-клиентом и тонким клиентом, работающим через веб-сервер, а также предоставим детальные инструкции по оптимизации веб-сервера и клиентских мест.

Рейтинг производительности различных режимов работы 1С

Для начала проанализируем реальный опыт использования различных типов подключения. Если ранжировать способы работы с базой данных 1С по скорости реакции интерфейса (от самого быстрого к самому медленному), мы получим следующую картину:

  1. Толстый клиент (локально или по быстрой локальной сети) — максимальная производительность, мгновенный отклик, но требует классической архитектуры и больших затрат ресурсов на клиентских машинах.
  2. Тонкий клиент через RDP (терминальный доступ) — практически идеальная скорость работы. Вся логика и отрисовка интерфейса происходят непосредственно на сервере, на клиента передается только картинка экрана.
  3. Тонкий клиент по прямому TCP/IP соединению — стандартный клиент-серверный режим. Работает быстро и комфортно, так как используется нативный исполняемый код платформы.
  4. Тонкий клиент через веб-публикацию (по HTTP/HTTPS ссылке) — работает очень сносно и стабильно. Производительность лишь незначительно уступает прямому TCP-соединению.
  5. Веб-клиент на localhost (в браузере на самом сервере) — скорость работы заметно падает, появляются первые задержки при открытии форм, несмотря на отсутствие сетевых задержек.
  6. Веб-клиент через локальную сеть или интернет — самый медленный режим работы. Присутствуют заметные паузы в 2-5 секунд при открытии журналов документов и переключении вкладок.

Разберем подробнее, почему веб-клиент в браузере проигрывает нативному тонкому клиенту, даже если они обращаются к одному и тому же веб-серверу.

В чем причина медленной работы веб-клиента: архитектурный ликбез

Главная причина медлительности веб-клиента кроется в технологии реализации управляемого интерфейса 1С в интернет-браузерах.

Когда мы запускаем базу через веб-клиент, в качестве среды исполнения (рантайма) используется интерпретатор JavaScript самого браузера. Платформа 1С «на лету» транслирует встроенный язык управляемых форм в тяжеловесный JavaScript-код. Большинство проблем с отзывчивостью интерфейса Такси связаны именно с необходимостью обеспечения совместимости со стандартами веб-браузеров.

В отличие от веб-клиента, настоящий тонкий клиент 1С, даже подключаясь по той же самой веб-ссылке к Apache или IIS, использует собственные скомпилированные функции рантайма на C++. Они оптимизированы под конкретную операционную систему, работают напрямую с памятью ПК и не зависят от ограничений движка JavaScript в браузере. Именно поэтому тонкий клиент выигрывает по скорости реакции интерфейса более чем в 2 раза.

Решение 1. Использование тонкого клиента через веб-публикацию вместо браузера

Если для вашей организации критична скорость потокового ввода данных (работа операторов, менеджеров по продажам, бухгалтеров), лучшим решением будет полный отказ от использования веб-клиента в браузере в пользу тонкого клиента, подключающегося по HTTP-ссылке.

При таком подходе база данных остается опубликованной на веб-сервере (Apache или IIS). Это позволяет работать из любой точки мира без VPN и сложных настроек маршрутизации, но пользователи запускают на своих компьютерах локальное приложение 1С.

Рассмотрим, как настроить такое подключение:

  1. Откроем окно запуска 1С:Предприятия на клиентском компьютере и нажмем кнопку Добавить.
  2. Выберем пункт Добавление в список существующей информационной базы.
  3. В качестве типа подключения укажем На веб-сервере.
  4. В поле Адрес информационной базы введем HTTP-ссылку на нашу публикацию (например, http://mycompany.ru/accounting).
  5. Завершим настройку. Теперь при запуске этой базы платформа автоматически задействует быстрый тонкий клиент, транслируя запросы через веб-сервер.

Для того чтобы администратору не приходилось вручную устанавливать и обновлять платформу на десятках клиентских машин, применим хитрость — запуск тонкого клиента из общего сетевого ресурса. Создадим на сервере общий сетевой каталог (шару), куда скопируем установленные файлы платформы, и пропишем на рабочих столах пользователей ярлык для запуска исполняемого файла 1cv8c.exe непосредственно из сети. Платформа также поддерживает групповые политики Active Directory для централизованного развертывания.

Решение 2. Тонкая настройка веб-сервера Apache

Если отказаться от браузеров невозможно (например, к базе подключаются внешние контрагенты или сотрудники на личных устройствах), нам потребуется выжать максимум из веб-сервера. Разберем настройки популярного веб-сервера 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

Решение 3. Оптимизация файла публикации default.vrd

Файл default.vrd находится в каталоге физического размещения публикации нашей базы на сервере. В нем содержатся настройки пула соединений между веб-сервером и кластером серверов 1С. Неоптимальный пул приводит к тому, что при кратковременном бездействии пользователя его соединение «засыпает», а последующий клик вызывает долгую инициализацию.

Откроем файл default.vrd и отредактируем параметры тега <pool> внутри секции <point>:


<pool size="20" 
      maxAge="900" 
      attempts="3" 
      serverPingPeriod="10" 
      serverPingTimeout="5"/>

Разберем, за что отвечают эти параметры:

Решение 4. Настройка клиентских браузеров

Скорость работы веб-клиента на 50% зависит от производительности компьютера самого пользователя и настроек его интернет-браузера. Проанализируем рекомендации по настройке клиентских машин:

Решение 5. Оптимизация на уровне разработки (для программистов)

Если конфигурация 1С содержит кастомные доработки, веб-клиент сразу проявит все ошибки неоптимального программирования. Нам необходимо оптимизировать код по следующим направлениям:

← На главную