Кэшируем данные в приложениях OneScript

25.03.18

Разработка - OneScript

В статье описана библиотека, позволяющая кэшировать данные в памяти, в ваших приложениях OneScript.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
(только для физ. лиц)
Библиотека кэширования данных:
.zip 4,66Kb
2 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Введение

В практической жизни, достаточно часто приходится сталкиваться с ситуациями,   когда имеет смысл сохранение данных или объектов в памяти, с последующим повторным их использованим в различных участках кода в течение определенного времени. Одним из примеров таких ситуаций, является загрузка и кэширование контента в web-приложениях.
Таким образом, целью создания настоящей библиотеки является реализация функционала кэширования в приложениях OneScript.

Описание

Основой библиотеки является статическое свойство Default , класса MemoryCache , которое доступно в любом приложении .NET. 

Доступные типы

КэшПамятиПоУмолчанию
Основной тип, реализующий работу с кэшем.

Конструкторы:
По умолчанию.

Методы:
Добавить(Ключ, Объект, ПолитикаКэширования)
Описание:
Добавляет объект в кэш с определенной политикой кэширования.
Параметры:
Ключ - идентификатор объекта, имеет тип Строка.
Объект - объект, который помещается в кэш, может иметь любой тип.
ПолитикаКэширования - объект типа ПолитикаКэшированияЭлемента, который определяет условия нахождения объекта в кэше.
Возвращаемое значение:
Тип boolean. Истина - если вставка прошла успешно, Ложь - если объект с таким ключем уже находится в кэше.

 

Удалить(Ключ)
Описание:
Удаляет объект, соответствующий идентификатору Ключ из кэша.
Параметры:
Ключ - идентификатор удаляемого объекта, имеет тип Строка.
Возвращаемое значение:
Возвращает удаляемый объект или Неопределено, если объект отсутствует в кэше.

 

Получить(Ключ)
Описание:
Получает объект из кэша по идентификатору.
Параметры:
Ключ - идентификатор объекта в кэше, имеет тип Строка.
Возвращаемое значение:
Возвращает сохраненный объект или Неопределено, если объект отсутствует в кэше.

ПолитикаКэшированияЭлемента
Используется для задания условий нахождения объекта в кэше, а также его удаления.

Конструкторы:
По умолчанию.

Методы:
Нет.

Свойства:
ДатаИстечения
Описание:
Определяет дату и время, по достижению которой, объект будет удален из кэша. Имеет тип Дата. Невозможно совместное использования этого свойства и свойства ПериодНеИспользования.

ПериодНеИспользования
Если не происходит обращения к объекту в кэше, в течение периода в секундах, определяемого этим свойством, объект будет автоматически удален из кэша. Имеет тип - Число. Невозможно совместное использования этого свойства и свойства ДатаИстечения.  

МониторыИзменения
Массив элементов, типа МониторИзмененияФайловНаКомпьютере. При изменении файлов, отслеживаемых мониторами, объект будет автоматически удален из кэша. 

МониторИзмененияФайловНаКомпьютере
Используется для мониторинга изменения/удаления файлов на компьютере.

Конструкторы:
МониторИзмененияФайловНаКомпьютере(СписокФайлов)
Описание:
Создает монитор изменений файлов на компьютере.
Параметры:
СписокФайлов - Массив элементов типа Строка, содержащих физический путь к файлам, изменение которых требуется отслеживать.

Методы:
Нет.

Свойства:
Файлы
Содержит массив элементов типа Строка, которые содержат физический путь к файлам, изменения которых отслеживаются данным монитором.

БылиИзменения
Имеет значение Истина - если были изменения и Ложь, в противном случае.

Установка

OneScript
Установка осуществляется простым копированием файлов dll в какую-нибудь папку.

HTTP-сервисы OneScript
Установка осуществляется копированием файлов dll в папку Bin веб-приложения.
Затем, необходимо подключить библиотеку, добавив нижеследующую строку в секцию appSettings, файла web.config:

<add key="DefaultMemoryCache" value="attachAssembly" />


Использование

Подключение библиотеки

OneScript

ПодключитьВнешнююКомпоненту("ПутьКПапкеГдеРасположеныDll\DefaultMemoryCache.dll");

HTTP-сервисы OneScript
Поскольку dll библиотеки подключается автоматически при старте web-приложения - никаких дополнительных действий не требуется.

Пример использования

OneScript

Результат = Неопределено;

// Создаем объект кэша
Кэш =  Новый КэшПамятиПоУмолчанию;

// Пытаемся получить объект по идентификатору
Результат = Кэш.Получить("c:\1\1\source.txt");

Если Результат = Неопределено Тогда

	// Объекта нет в кэше
	// Создаем объект
	Результат = Новый ТекстовыйДокумент;
	Результат.Прочитать("c:\1\1\source.txt");

	// Создаем политику кэширования, которая будет удалять объект из кэша при изменениии файла
	Политика = Новый ПолитикаКэшированияЭлемента;
	
	МассивФайлов = Новый Массив;
	МассивФайлов.Добавить("c:\1\1\source.txt");
	МассивМониторов = Новый Массив;
	МассивМониторов.Добавить(Новый МониторИзмененияФайловНаКомпьютере(МассивФайлов));
	Политика.МониторыИзменения = МассивМониторов;
	
	// Также, можем ограничить нахождение объекта в кэше определенной датой
	Политика.ДатаИстечения = ТекущаяДата() + 60;
	// Или удаляем объект, если он не использовался определенное количество секунд
	// Совместное использование ПериодНеИспользования и ДатаИстечения невозможно
	//Политика.ПериодНеИспользования = 10;
	
	// Помещаем его в кэш. Первый параметр - идентификатор объекта
	Кэш.Добавить("c:\1\1\source.txt", Результат, Политика);

КонецЕсли;

1С:Предприятие (Каркасная конфигурация)
Ниже приведен пример кода, иллюстрирующий использования библиотеки в Ваших web-приложениях, создаваемых на основе каркасной конфигурации .  

// Это пример использования библиотеки в каркасной конфигурации
// для создания web-приложений

Результат = Неопределено;

// Выполняется только в OneScript. 
// В 1С:Предприятие, код между //<OneScript> и //<!OneScript>, должен быть закомментирован

//<OneScript>
//// Создаем объект кэша
//Кэш =  Новый КэшПамятиПоУмолчанию;
//
//// Пытаемся получить объект по идентификатору
//Результат = Кэш.Получить("c:\1\1\source.txt");
//<!OneScript>

Если Результат = Неопределено Тогда

	// Объекта нет в кэше
	// Создаем объект
	Результат = Новый ТекстовыйДокумент;
	Результат.Прочитать("c:\1\1\source.txt");

	// Выполняется только в OneScript. 
	// В 1С:Предприятие код, между //<OneScript> и //<!OneScript> должен быть закомментирован
	//<OneScript>
	//// Создаем политику кэширования, которая будет удалять объект из кэша при изменениии файла
	//Политика = Новый ПолитикаКэшированияЭлемента;
	
	//МассивФайлов = Новый Массив;
	//МассивФайлов.Добавить("c:\1\1\source.txt");
	//МассивМониторов = Новый Массив;
	//МассивМониторов.Добавить(Новый МониторИзмененияФайловНаКомпьютере(МассивФайлов));
	//Политика.МониторыИзменения = МассивМониторов;
	
	//// Также, можем ограничить нахождение объекта в кэше определенной датой
	//Политика.ДатаИстечения = ТекущаяДата() + 60;
	//// Или удаляем объект, если он не использовался определенное количество секунд
	//// Совместное использование ПериодНеИспользования и ДатаИстечения невозможно
	////Политика.ПериодНеИспользования = 10;
	//
	//// Помещаем его в кэш. Первый параметр - идентификатор объекта
	//Кэш.Добавить("c:\1\1\source.txt", Результат, Политика);
	//<!OneScript>

КонецЕсли;

Заключение

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

P.S.

Саму библиотеку можно загрузить, скачав архив из файлов для скачивания.

Исходный код библиотеки можно посмотреть по ссылке: https://github.com/jdeshin/OneScript-MemoryCache

Вступайте в нашу телеграмм-группу Инфостарт

HTTP-сервисы web OneScript кеш кэш

См. также

OneScript Мессенджеры и боты Программист Бесплатно (free)

Создаём Telegram-бота для декомпиляции 1С файлов на OneScript и фреймворке Осень. Разберём архитектуру MVC для Telegram-бота. Научимся работать с фреймворком Осень: внедрение зависимостей, аннотации, логирование. Реализуем разбор бинарных файлов (EPF, ERT, CF, CFE.). Упакуем бота в Docker-контейнер

21.08.2025    957    untru    15    

24

DevOps и автоматизация разработки OneScript Программист Бесплатно (free)

Когда в компании используется более 500 внешних обработок для 20 различных баз, процесс их параллельной разработки превращается в борьбу. Расскажем о тернистом пути от ручных скриптов к масштабируемой DevOps-системе, позволяющей централизованно управлять внешними обработками, автоматизировать сборки, интегрироваться с таск-трекером, запускать автотесты и разворачивать окружение в пару кликов.

12.08.2025    4636    untru    13    

22

OneScript Программист 1С v8.3 Бесплатно (free)

В 2024 году главному инструменту DevOps в 1С исполнилось 10 лет. Расскажем о том, что представляет собой экосистема 1Script в 2024 году и почему её важно включить в свой рабочий процесс.

16.06.2025    6076    Evil Beaver    43    

58

Групповая разработка (Git, хранилище) EDT OneScript Программист 1С v8.3 Бесплатно (free)

В данной публикации рассматривается пример реализации скрипта, который автоматизирует получение ветки из GIT репозитория и обновление конфигурации, если разработка проекта ведется в EDT.

11.06.2025    2940    AlexF1    4    

8

WEB-интеграция OneScript Программист Стажер Бесплатно (free)

Библиотека для работы с базами MySQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

08.04.2025    4416    bayselonarrend    27    

49

Внешние источники данных OneScript Программист Стажер 1С v8.3 Бесплатно (free)

Библиотека для работы с базами PostgreSQL на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

20.02.2025    5843    bayselonarrend    30    

47

Работа с интерфейсом OneScript Программист 1С v8.3 Россия Бесплатно (free)

Графический интерфейс с применением веб-технологий в коллекцию инструментария сценарного языка OneScript. Библиотека создает десктопное приложение имеющее декларативный пользовательский интерфейс (GUI), построенный веб-браузером. Возможности веб-технологий по представлению информации огромны. Эти возможности соответственно добавляются и к сценариям OneScript.

23.01.2025    1460    0    ahyahy    15    

11

OneScript Программист Бесплатно (free)

Вместе создадим библиотеку на Oscript с нуля, шаг за шагом: от базовой структуры проекта до перевода на ОСень. Разберем структуру проекта, работу с файлом конфигурации, логирование, уведомления, консольный интерфейс и многое другое. Освоим весь цикл разработки и сделаем первый шаг к созданию собственных инструментов на Oscript!

13.01.2025    4707    leobrn    16    

60
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tormozit 7303 25.03.18 18:15 Сейчас в теме
В имени типа "МониторИзмененияФайловНаКомпьютере" опечатка.
2. blackhole321 1304 25.03.18 18:34 Сейчас в теме
(1)Спасибо Вам огромное!
Все поправил, пересобрал и перевыложил.
И ведь все тестовые скрипты работали :) Вот, что значит Ctrl+C, Ctrl+V
Оставьте свое сообщение