Кэширование

В системе Docsvision используется многоуровневое кэширование данных сервером и клиентом Docsvision.

Серверный кэш

Кэш параметров пользовательских сессий

Используется для хранения данных пользовательских сессий, загружаемых из таблицы dvsys_session (параметры сессии, наличие лицензии и пр.), а также различных временных вычисляемых объектов. Позволяет снизить нагрузку на БД при получении данных сессии клиента при его обращении к серверу Docsvision, а также ускорить восстановление пользовательских сессий после перезапуска сервера Docsvision.

Размер кэша не ограничен. Периодичность синхронизации кэша с БД регулируется параметром HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\Server\UpdateSessionCacheTimeout в реестре ОС (по умолчанию — 3 минуты). Данные неактивных сессий удаляются из кэша при синхронизации.

У кэша есть определённая привязка к БД: первоначально данные кэша синхронизируются с БД по умолчанию, а если сессии в БД нет, проверяются другие подключенные БД.

Кэш информации о пользователях

Используется для хранения контекста безопасности пользователя: SID, AccountName, членство в стандартных группах Docsvision. Позволяет ускорить выполнение операций проверки членства в группах безопасности Docsvision, получения SID по AccountName и AccountName по SID.

Размер кэша неограничен. Использование данного кэша регулируется параметром HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\Server\UserInfoCacheMode (по умолчанию FALSE — отключен).

У кэша отсутствует привязка к БД.
Кэш метаданных

Используется для хранения XML библиотек карточек и карточек. Позволяет снизить нагрузку при создании новых пользовательских сессий (при загрузке информации о карточках и библиотеках карточек в сессию).

Кэши обновляются при запуске сервера, т. к. эти данные, по большей части, неизменны.

Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш поисков и представлений

Используется для хранения информации о поисковых запросах и представлениях. Позволяет быстро определить наличие в БД сформированной процедуры поиска или представления.

Функции кэша управляются параметрами в ветке HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\Server:
  • CacheTreshold — определяет количество обращений к элементу (поисковому запросу или представлению), после достижения которого элемент добавляется в кэш (по умолчанию — 3).

  • CacheReductionRatio — определяет коэффициент, на который будет уменьшен кэш (очищен) при достижении максимального размера.

  • MaxCacheSize — максимальное количество элементов в кэше.

    Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш дескрипторов безопасности

Используется для хранения дескрипторов безопасности. Позволяет снизить нагрузку при проверке прав на объекты по дискреционной модели безопасности.

Размер кэша управляется параметром HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\Server\MaxCacheSize (по умолчанию — 10000 элементов).

Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш файлов

Используется для хранения данных файлов, хранящихся в Docsvision. Позволяет снизить нагрузку на БД при чтении файлов через курсор.

Кэш состоит из двух элементов:
  • Папка %Temp%\Имя-БД, в которой хранятся файлы, загруженные в кэш.

  • Объект в памяти, в котором содержится информация о файлах в кэше.

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

  • FileCacheSize — определяет долю диска, которая может использоваться кэшем. Значение задаётся в процентах (по умолчанию — 10%). В любом случае занимает не больше места, чем доступно на диске.

  • FileCacheMaxFilesCount — определяет максимальное количество файлов в кэше (по умолчанию — 1000 файлов).

    Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш информации о справочниках

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

Актуальность данных в кэше проверяется при каждом обращении. Размер кэша не ограничен.

Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш данных секций справочников

Используется для хранения данных секций, в которых используется простая модель безопасности. Применяется для быстрого доступа к атрибутивным данным справочников и строк секций справочников.

Кэш может содержать дубликаты данных секции, если данные секций загружаются с различными уровнями секций: данные самой секции, секции с подсекциями.

Актуальность данных в кэше проверяется при каждом обращении. Размер кэша не ограничен.

Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш данных карточек

Используется для хранения XML-описания карточек, служебных атрибутов. Применяется при получении карточек.

Для попадания в кэш карточка должна удовлетворять нескольким условиям:

  • Должна иметь простую модель безопасности.

  • Не должна иметь виртуальных полей.

  • Поля не должны зависеть от пользователя (флаг Зависит от пользователя в схеме).

Кэш информации о файлах

Используется для хранения служебной информации о файлах. Позволяет снизить нагрузку на БД при запросе информации о файлах.

Кэш курсоров и их страниц

Используется для хранения курсоров и страниц при чтении данных карточек через курсор. Применяется при получении курсора для чтения карточки.

Кэш результатов поисковых запросов

Используется для хранения результатов поисковых запросов по секциям карточек. Позволяет снизить нагрузку на БД при выполнении запроса, который выполнялся.

Кэш XSLT-преобразований карточек

Используется для хранения XSLT-преобразований карточек.

Информация об узлах AlwaysOn

Используется для хранения списка подключенных реплик, а также выбора реплики AlwaysOn, используемой методами, которые работают с поисками и представлениями.

Все перечисленные серверные кэши, кроме файлового, в зависимости от настроек сервера, могут храниться в оперативной памяти или в Redis. Также кэш может быть отключен.

Серверный кэш расширения Backoffice

Кэш видов, ролей и состояний

Используется для хранения данных справочников видов, ролей и состояний. Применяется для ускорения работы ролевой модели безопасности.

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

Размер кэша не ограничен.

Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
Кэш ролевой модели

Используется для хранения:

  • Операндов — данные в кэше считаются актуальными в течение 5 секунд после создания, далее — проверка по штампу времени.

  • Настроек ролевой модели — актуальность данных в кэше проверяется раз в 15 секунд.

  • Хранимых процедур.

  • Информации о карточках — данные в кэше считаются актуальными в течение 60 секунд после создания, далее — проверка по штампу времени.

  • Результаты вычисления прав пользователя по ролевой модели.

    "Кэш ролевой модели" — собственный кэш серверного расширения Базовые объекты и не дублирует "Кэш видов, ролей и состояний".

Клиентский кэш

Кэш данных на диске

Используется для хранения данных файлов и строк секций карточек. Позволяет ускорить работу с данными карточек и справочников, которые уже были получены с сервера Docsvision.

Расположение папки кэша управляется параметром string: HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\ObjectManager\CachePath. Кэш текущего пользователя и текущей БД по умолчанию размещается в папке %TEMP%\DVCache\Имя БД\User ID.

Типы кэшируемых данных определяются с помощью параметра dword: HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\DocsVision\Platform\5.5\ObjectManager\CacheMode: 1 — только карточки, 2 — только файлы, 4 — только справочники. Значение можно комбинировать: 3 (1+2) — карточки и файлы.

Размер кэша неограничен.

Если клиент установлен в профиль пользователя, используйте следующие ветки реестра:
  • HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\ObjectManager\CachePath.

  • HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\DocsVision\Platform\5.5\ObjectManager\CacheMode.

Кэш созданных экземпляров CardData

Используется для хранения экземпляров класса CardData с данными карточки. Позволяет ускорить работу с данными карточек.

Размер кэша регулируется параметром HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\5.5\Server\CardPoolSize (по умолчанию — 30 карточек). При превышении установленного размера кэша, из него удаляются CardData с данными карточек, но не справочников.

Кэш метаданных

Используется для хранения информации о библиотеке карточек и о типах карточек. Данные являются статичными — обновление выполняется при создании сессии.

Кэш UI-компонент карточек и справочников

Используется для хранения экземпляров UI-компонент карточек и справочников. Позволяет ускорить открытие карточки. Данный кэш используется только в Windows-клиенте (не в РМА).

Управление кэшированием UI-компонента осуществляется с помощью программного интерфейса IReusableCardComponent — позволяет разрешить или запретить кэширование.

Кэширование не работает для следующих UI-компонент: компоненты VB6, открытые в модальном режиме; карточки с WPF элементами управления (кэширование может быть включено через интерфейс IReusableCardComponent).

Карточки, открытые модально и не модально, кэшируются раздельно.

Размер кэша ограничен — 20 экземпляров UI-компонент для одного типа карточек. Также кэш автоматически очищается при превышении клиентом лимита использования User и GDI объектов — не более 7000.

Информацию о кэшировании в Web-клиенте см. в документации для модуля Web-клиент.