Cache – работа с кэшем
<< Click to Display Table of Contents >> Объектная модель > Основные механизмы Cache – работа с кэшем |
Кэш используется для хранения простых типов данных (int, double, string и т.д.) или структур, содержащих простые типы, в течение определенного времени.
Для программной работы с кэшем предназначен класс Sungero.Core.Cache.
Методы для работы с кэшем доступны только в серверном коде.
Методы
Имя |
Описание |
---|---|
Добавить или обновить значение в кэше |
|
Удалить значение из кэша |
|
Получить значение из кэша |
Пример. Получение заданий сотрудника из кэша
Чтобы не тратить время на пересчет данных, можно воспользоваться результатами прошлого расчета, актуализировать их и сохранить для последующего обращения. Данные, рассчитанные в предопределенной структуре прикладного кода, хранятся в кэше. Используйте его для ускорения работы с данными. Например, в виджете для быстрого получения заданий сотрудника с использованием кэша ранее вычисленных заданий:
// <param name="recipient">Сотрудник.</param>
// <returns> Задания сотрудника.</returns>
public static Shell.Structures.Module.EmployeeAssignmentsCache GetCachedAssignment(IRecipient recipient)
{
var key = string.Format(Shell.Constants.Module.EmployeeAssignmentsCacheKey, recipient.Id);
Shell.Structures.Module.EmployeeAssignmentsCache cachedAssignmentCompletion;
// Получить задания из кэша, обновить кэш заданий сотрудника.
if (Cache.TryGetValue(key, out cachedAssignmentCompletion))
cachedAssignmentCompletion = UpdateEmployeeAssignmentsCache(cachedAssignmentCompletion, Sungero.Shell.Constants.Module.UserCache);
else
{
var lightUser = Shell.Structures.Module.LightUser.Create(recipient.Id, GetTimeZoneByUserId(recipient.Id));
var newCache = Shell.Structures.Module.EmployeeAssignmentsCache.Create(lightUser, null, new List<LightUser>(), null, new List<Shell.Structures.Module.CachedAssignment>(), 0, 0, 0, 0, 0, 0, false);
cachedAssignmentCompletion = UpdateEmployeeAssignmentsCache(newCache, Sungero.Shell.Constants.Module.UserCache);
}
// Если задание менялось, добавить или обновить значение в кэше.
if (cachedAssignmentCompletion.IsChanged)
Cache.AddOrUpdate(key, cachedAssignmentCompletion, Calendar.Today.AddDays(90));
return cachedAssignmentCompletion;
}
© Компания Directum, 2024 |