Локальный и глобальный кеш

Локальный кеш - сохраняемые данные, которые доступны только текущему скрипту.

Глобальный кеш - сохраняемы данные, которые доступны всем скриптам и агентам.

Методы для работы с локальным кешем:

  • IContext.StoreObject(...) - Записать объект в кеш

  • IContext.LoadObject(...) - Загрузить объект из кеша.

Методы для работы с глобальным кешем:

  • IContext.StoreGlobalObject(...) - Записать объект в глобальный кеш.

  • IContext.LoadGlobalObject(...) - Загрузить объект из глобального кеша

Важно: периодически кеш данных очищается для освобождения места.
Для того чтобы при очередном сжатии не удалились данные их нужно обернуть в класс NotClearableContainer.

Пример с глобальным кешем:

using TSLab.DataSource; using TSLab.Script; using TSLab.Script.Handlers; namespace MyLib { public class TestGlobalCashe : IExternalScript { public void Execute(IContext ctx, ISecurity sec) { // Записать в глобальный кеш var value = 1.1; // значение var key = "key"; // ключ в кеше (любая уникальная строка) var container = new NotClearableContainer<double>(value); ctx.StoreGlobalObject(key, container); // Прочитать из глобального кеша var key2 = "key"; var container2 = ctx.LoadGlobalObject(key2) as NotClearableContainer<double>; var value2 = container2?.Content; ctx.Log($"Value: {value2}", MessageType.Info, true); } } }

Примечание: при кешировании на диск идет сериализация объекта через BinaryFormatter. Поэтому все классы объектов, которые кешируются должны иметь атрибут [Serializable].