Кэширование
Информация |
В следствие того, что для панелей индикаторов (дашбордов) и отчетов используется одинаковый унифицированный формат шаблона MRT, методы для загрузки шаблона и работы с данными, то в тексте документации будет использоваться слово «отчет».
|
Для работы HTM5 Designer использует кэш сервера для хранения редактируемого шаблона отчета. Это необходимо, так как клиентская часть дизайнера содержит только визуальное представление компонентов шаблона отчета, сам объект отчета со всеми параметрами и свойствами хранится на стороне сервера.
Управлять кэшированием можно при помощи следующих приведенных ниже свойств.
Свойство CacheMode
Данное свойство дизайнера устанавливает тип кэширования. Может принимать одно из значений, указанных в перечислении StiServerCacheMode:
None – не используется в компоненте HTML5 Designer; ObjectCache – для кэширования используется кэш сервера, в котором сохраняется объект отчета (значение по умолчанию); StringCache - для кэширования используется кэш сервера, в котором сохраняется отчет в виде упакованной строки; ObjectSession - для кэширования используется текущая сессия, в которой сохраняется объект отчета; StringSession - для кэширования используется текущая сессия, в которой сохраняется отчет в виде упакованной строки.
|
Свойство CacheItemPriority
Данное свойство устанавливает приоритет хранимого в кэше сервера отчета, влияет на автоматическую очистку памяти сервера в случае ее нехватки. Чем меньше приоритет, тем больше шанс удаления информации из памяти.
|
Свойство CacheTimeout
Данное свойство указывает величину времени в минутах, в течение которого необходимо сохранять отчет в кэше сервера. Если при использовании кэширования требуемый отчет не найден в кэше (т.е. истекло время хранения объекта), то он будет запрошен заново при помощи специального действия GetReport, в этом случае несохраненные изменения могут быть утеряны.
|
Компонент HTML5 Designer предоставляет возможность определить собственные методы работы с кэшированием отчета. Для этого предназначен специальный класс StiCacheHelper, который содержит методы получения отчета из кэша и сохранения отчета в кэш. Необходимо создать новый класс, унаследованный от StiCacheHelper, и перегрузить указанные выше методы, которые соответственно имеют названия GetObject и SaveObject.
HomeController.cs |
... public class DesignerController : Controller { public class StiMyCacheHelper : StiCacheHelper { public override object GetObject(string guid) { string path = System.IO.Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/"), "CacheFiles", guid); if (System.IO.File.Exists(path)) { byte[] cacheData = System.IO.File.ReadAllBytes(path); return StiCacheHelper.GetObjectFromCacheData(cacheData); } return null;
//return base.GetObject(guid); }
public override void SaveObject(object obj, string guid) { byte[] cacheData = StiCacheHelper.GetCacheDataFromObject(obj); string path = System.IO.Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/"), "CacheFiles", guid); System.IO.File.WriteAllBytes(path, cacheData);
//base.SaveObject(obj, guid); }
public override void RemoveReport(string guid) { string path = System.IO.Path.Combine(System.Web.HttpContext.Current.Server.MapPath("~/"), "CacheFiles", guid); if (File.Exists(path)) { File.Delete(path); } } }
static DesignerController() { StiMvcDesigner.CacheHelper = new StiMyCacheHelper(); } } ... |
Для инициализации работы с кэшированием отчета при помощи созданного класса, достаточно задать его в качестве значения статического свойства StiMvcDesigner.CacheHelper в конструкторе контроллера.