Создано на основе практической реализации из публикации
Повышение производительности веб-сервисов
Задача: Повысить производительность вызовов http-сервисов
Платформа: 8.3.18.1289
При использовании http-сервисов от 1С значительную часть времени занимает установка параметров сеанса.
И если время сам метод выполняется менее чем за секунду. то установка параметров сеанса может занимать от полусекунды и выше.
Столкнувшись с необходимостью сократить время вызовов - решил применить переиспользование сеансов из вышеупомянутой статьи. В статье описана работа с Web-сервисами, а у меня Http-сервисы. И хотя по логике - там всё должно быть аналогично - тем не менее столкнулся с некоторыми трудностями. И поскольку аналогичного решения не нашел - делюсь своим опытом.
Запуск и использование сеанса - прошли без проблем.
Проблемы были с завершением сеанса. Но как выяснилось там тоже было всё просто.
Описания всех параметров и способов их установки приводить не буду. Приведу только свои настройки которые заработали.
1. Настройка повторного использования сеансов
1.1 Файл default.vrd
1.2 Настройка http-сервиса
2. Первый запуск - начало сессии
2.1 Вызов метода:
POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1
2.2 Заголовки:
User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json:
Content-Length: 0
IBSession: start
2.3 Из заголовка ответа - берем ibsession
Set-Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8
3. Повторное использование сессии
3.1 Вызов метода:
POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1
3.2 Заголовки - добавляем куки - из п 2.2:
User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json:
Content-Length: 0
Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8
3. Завершение сессии
3.1 Вызов метода:
POST https://ПутьКПубликации/hs/client-api/v2/ИмяМетода HTTP/1.1
3.2 Заголовки - добавляем куки и флаг завершения сессии:
User-Agent: Fiddler
Host: ПутьКПубликации
Authorization: Basic ...
Content-Type= application/json:
Content-Length: 0
Cookie: ibsession=92d60db6-777c-4e3f-89b0-ff3ae8a61aa8
IBSession: finish
"IBSession" - регистр в наименовании важен, если написать всё в нижнем регистре - работать не будет, сессия не завершиться.
Итоги по времени исполнения
Первый запуск (старт сессии)
Overall Elapsed: 0:00:01.239
Повторный запуск
Overall Elapsed: 0:00:00.306
Завершение сессии
Overall Elapsed: 0:00:00.336
Время выполнения метода по замерам 1С: 0.022 сек
Судя по замерам - скорость выросла значительно.