Кэширование
В системе Docsvision используется многоуровневое кэширование данных сервером и клиентом Docsvision.
Серверный кэш
- Кэш параметров пользовательских сессий
-
Используется для хранения данных пользовательских сессий, загружаемых из таблицы dvsys_session (параметры сессии, наличие лицензии и пр.), а также различных временных вычисляемых объектов. Позволяет снизить нагрузку на БД при получении данных сессии клиента при его обращении к серверу Docsvision, а также ускорить восстановление пользовательских сессий после перезапуска сервера Docsvision.
Размер кэша не ограничен. Периодичность синхронизации кэша с БД регулируется параметром
HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\Server\UpdateSessionCacheTimeout
в реестре ОС (по умолчанию —3 минуты
). Данные неактивных сессий удаляются из кэша при синхронизации.У кэша есть определённая привязка к БД: первоначально данные кэша синхронизируются с БД по умолчанию, а если сессии в БД нет, проверяются другие подключенные БД.
- Кэш информации о пользователях
-
Используется для хранения контекста безопасности пользователя:
SID
,AccountName
, членство в стандартных группах Docsvision. Позволяет ускорить выполнение операций проверки членства в группах безопасности Docsvision, полученияSID
поAccountName
иAccountName
поSID
.Размер кэша неограничен. Использование данного кэша регулируется параметром
HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\Server\UserInfoCacheMode
(по умолчаниюFALSE
— отключен).У кэша отсутствует привязка к БД. - Кэши метаданных
-
Используется для хранения XML библиотек карточек и карточек. Позволяет снизить нагрузку при создании новых пользовательских сессий (при загрузке информации о карточках и библиотеках карточек в сессию).
Кэши обновляются при запуске сервера, т. к. эти данные, по большей части, неизменны.
Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей. - Кэш поисков и представлений
-
Используется для хранения информации о поисковых запросах и представлениях. Позволяет быстро определить наличие в БД сформированной процедуры поиска или представления.
Функции кэша управляются параметрами в веткеHKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\Server
:-
CacheTreshold
— определяет количество обращений к элементу (поисковому запросу или представлению), после достижения которого элемент добавляется в кэш (по умолчанию —3
). -
CacheReductionRatio
— определяет коэффициент, на который будет уменьшен кэш (очищен) при достижении максимального размера. -
MaxCacheSize
— максимальное количество элементов в кэше.Модуль Платформа может одновременно обрабатывать несколько баз данных. Каждой БД соответствует свой экземпляр кешей.
-
- Кэш дескрипторов безопасности
-
Используется для хранения дескрипторов безопасности. Позволяет снизить нагрузку при проверке прав на объекты по дискреционной модели безопасности.
Размер кэша управляется параметром
HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\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\ObjectManager\CachePath
. Кэш текущего пользователя и текущей БД по умолчанию размещается в папке%TEMP%\DVCache\Имя БД\User ID
.Типы кэшируемых данных определяются с помощью параметра
dword
:HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\DocsVision\Platform\ObjectManager\CacheMode
:1
— только карточки,2
— только файлы,4
— только справочники. Значение можно комбинировать:3
(1+2
) — карточки и файлы.Размер кэша неограничен.
- Кэш созданных экземпляров CardData
-
Используется для хранения экземпляров класса
CardData
с данными карточки. Позволяет ускорить работу с данными карточек.Размер кэша регулируется параметром
HKEY_LOCAL_MACHINE\SOFTWARE\DocsVision\Platform\Server\CardPoolSize
(по умолчанию —30
карточек). При превышении установленного размера кэша, из него удаляютсяCardData
с данными карточек, но не справочников. - Кэш метаданных
-
Используется для хранения информации о библиотеке карточек и о типах карточек. Данные являются статичными — обновление выполняется при создании сессии.
- Кэш UI-компонент карточек и справочников
-
Используется для хранения экземпляров UI-компонент карточек и справочников. Позволяет ускорить открытие карточки. Данный кэш используется только в Windows-клиенте (не в РМА).
Управление кэшированием UI-компонента осуществляется с помощью программного интерфейса
IReusableCardComponent
— позволяет разрешить или запретить кэширование.Кэширование не работает для следующих UI-компонент: компоненты
VB6
, открытые в модальном режиме; карточки сWPF
элементами управления (кэширование может быть включено через интерфейсIReusableCardComponent
).Карточки, открытые модально и не модально, кэшируются раздельно.
Размер кэша ограничен —
20
экземпляров UI-компонент для одного типа карточек. Также кэш автоматически очищается при превышении клиентом лимита использованияUser
иGDI
объектов — не более7000
.
Информацию о кэшировании в Web-клиенте см. в документации для модуля Web-клиент.