Как настроить веб-клиент 1С через Apache, чтобы он работал так же быстро, как тонкий клиент?

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

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

В этой статье мы подробно разберем, почему возникает эта проблема, и рассмотрим комплексные методы оптимизации связки 1С + Apache. Мы выясним, как настроить веб-сервер, параметры публикации и клиентские машины, чтобы приблизить скорость работы в браузере к производительности полноценного тонкого клиента.

Выясняем причину: почему веб-клиент работает медленнее?

Для начала проанализируем ситуацию с технической точки зрения. Веб-клиент 1С — это сложнейшее веб-приложение. Современный интерфейс «Такси» на стороне браузера представляет собой колоссальный объем динамически генерируемого кода на JavaScript.

Когда пользователь работает в веб-клиенте, выполняются следующие процессы:

  1. Браузер постоянно интерпретирует огромные массивы JS-кода. Этот процесс упирается в однопоточность интерпретатора JavaScript в самом браузере.
  2. При каждом интерактивном действии (открытие формы, нажатие кнопки, выбор элемента из списка) происходит обмен AJAX-запросами между браузером и веб-сервером Apache, который затем транслирует их кластеру 1С.
  3. Если веб-сервер настроен по умолчанию, на каждое действие пользователя тратится время на повторную загрузку элементов интерфейса, картинок, стилей, а также на инициализацию новых сессий связи.

Тонкий клиент лишен большинства этих недостатков, так как он скомпилирован на C++, эффективно использует многопоточность процессора и напрямую работает с оперативной памятью компьютера. Тем не менее, веб-клиент можно заставить работать быстро. Разберем по шагам, как это сделать.

Решение 1. Настройка сжатия трафика и параметров соединения 1С

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

Рассмотрим структуру URL-адреса для запуска веб-клиента с оптимизированными параметрами. Мы можем передавать специальные ключи непосредственно в адресной строке браузера:

https://trade.demo.1c.ru/trade/ru_RU/?O=Low&TComp=Deflate

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

Решение 2. Кэширование статических файлов на стороне Apache

Каждый раз при открытии форм веб-клиент запрашивает у Apache файлы стилей, картинок и скриптов. Если кэширование на сервере не настроено, браузер будет постоянно отправлять запросы на сервер для проверки актуальности этих файлов. Даже получая в ответ код 304 Not Modified, система тратит драгоценное время на сетевые задержки (RTT).

Чтобы избежать этого, настроим жесткое кэширование статики на уровне Apache. Для этого откроем конфигурационный файл веб-сервера httpd.conf и включим модули mod_expires и mod_headers. Добавим в конфигурационный файл следующие строки:


<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 31 days"
    ExpiresByType text/javascript "access plus 31 days"
    ExpiresByType application/javascript "access plus 31 days"
    ExpiresByType application/x-javascript "access plus 31 days"
    ExpiresByType image/png "access plus 31 days"
    ExpiresByType image/gif "access plus 31 days"
    ExpiresByType image/jpeg "access plus 31 days"
</IfModule>

После перезапуска Apache браузеры пользователей будут мгновенно брать все тяжелые скрипты и элементы оформления из своего локального кэша, вообще не обращаясь к серверу при открытии новых окон.

Решение 3. Включение сжатия данных на уровне веб-сервера (mod_deflate)

Помимо настроек самой 1С, критически важно сжимать текстовый трафик (HTML, XML, JSON, JS, CSS) силами самого веб-сервера. Это снижает объем сетевого трафика в 3–5 раз.

Для этого в файле httpd.conf раскомментируем или добавим модуль mod_deflate:

LoadModule deflate_module modules/mod_deflate.so

И настроим правила сжатия для типов данных, которые активно используются веб-клиентом 1С:


<IfModule mod_deflate.c>
    SetOutputFilter DEFLATE
    # Сжимаем только текстовые форматы и скрипты
    AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/javascript application/json
    
    # Исключаем сжатие для изображений и архивов, которые уже сжаты
    SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png|zip|gz|tgz|bz2|sit|rar)$ no-gzip dont-vary
</IfModule>

Решение 4. Оптимизация пула соединений в файле публикации (.vrd)

При каждом интерактивном действии веб-сервер Apache должен быстро передать запрос в кластер 1С. Если под каждый запрос будет создаваться новое сетевое соединение с базой, пользователь будет постоянно ловить секундные задержки на авторизацию и создание сеанса.

Чтобы этого избежать, мы должны настроить пул соединений в файле публикации вашей базы данных. Этот файл называется default.vrd и обычно находится в каталоге публикации базы на веб-сервере. Нам необходимо отредактировать параметры внутри тега <point>:


<point xmlns="http://v8.1c.ru/8.2/virtual-resource-system"
       xmlns:xs="http://www.w3.org/2001/XMLSchema"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       base="/base_name"
       ib="Connect=Srvr="server_name";Ref="base_name";">
    
    <ws enable="true" 
        pointJobsMaxCount="10" 
        poolSize="20" 
        poolTimeout="60"/>
        
</point>

Рассмотрим ключевые параметры пула соединений:

Решение 5. Перевод веб-сервера Apache на современный протокол HTTP/2

По умолчанию Apache часто работает по устаревшему протоколу HTTP/1.1, который накладывает жесткие ограничения на количество одновременных запросов к серверу от одного клиента. Из-за этого браузер строит «очередь» из запросов на получение картинок и скриптов формы.

Протокол **HTTP/2** поддерживает мультиплексирование, позволяя передавать множество запросов параллельно по одному-единственному TCP-соединению. Это кардинально ускоряет отрисовку сложных интерфейсов 1С.

Для активации HTTP/2 в Apache:

  1. Убедитесь, что ваше подключение работает по защищенному протоколу HTTPS (HTTP/2 поддерживается браузерами только в защищенном режиме).
  2. В файле httpd.conf подключите модуль: LoadModule http2_module modules/mod_http2.so
  3. Добавьте директиву в конфигурацию виртуального хоста: Protocols h2 http/1.1

Решение 6. Компромиссный вариант: Тонкий клиент через веб-сервер

Если веб-клиент в браузере по-прежнему не удовлетворяет вашим требованиям по скорости, но у вас нет возможности организовать прямое подключение к серверу 1С по локальной сети через TCP, используйте компромиссный вариант — запуск Тонкого клиента через HTTP/HTTPS.

Для этого при добавлении информационной базы в стартере 1С выберите тип подключения «На веб-сервере» и укажите адрес вашей публикации (например, https://server.ru/base). Для автоматизации такого запуска подойдёт лаунчер для 1С с поддержкой запуска тонкого клиента через веб-сервер.

Преимущества такого подхода:

Решение 7. Настройка оборудования и энергопотребления

Поскольку обработка интерфейса веб-клиента сильно завязана на однопоточную производительность процессора (как на ПК пользователя при рендеринге JS, так и на веб-сервере при обработке запросов), критически важно исключить задержки на переключение частот процессора.

Рекомендуется выполнить следующие настройки:

Применив эти настройки в комплексе, вы сможете добиться от веб-клиента 1С высокой отзывчивости и скорости работы, сопоставимой с классическим Тонким клиентом.

← На главную