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

Публикация № 805087

Разработка - Языки и среды - OneScript

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

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

Введение

В практической жизни, достаточно часто приходится сталкиваться с ситуациями,   когда имеет смысл сохранение данных или объектов в памяти, с последующим повторным их использованим в различных участках кода в течение определенного времени. Одним из примеров таких ситуаций, является загрузка и кэширование контента в 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

7

Скачать файлы

Наименование Файл Версия Размер
Библиотека кэширования данных:
.zip 4,66Kb
25.03.18
2
.zip 4,66Kb 2 Скачать

Специальные предложения

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

См. также

OneScript - WinExt: Работа с окнами, управление мышкой и клавиатурой 74

Инструменты и обработки Программист Архив с данными Windows Абонемент ($m) OneScript

Цель: Инструмент позволяющий автоматизировать управление окнами, мышкой, посылать нажатия клавиш. Задачи: - Поиск окна по части заголовка - Поиск фрагмента изображения похожего на сохраненный в файле кусок. - Возможность позиционировать курсор, нажимать кнопки мышки. - Возможность посылать нажатия клавиш

1 стартмани

29.11.2018    8011    8    ret-Phoenix    30       

Динамическое выполнение кода OneScript из 1С:Предприятие 31

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) OneScript

В статье описан подход, позволяющий динамически выполнять фрагменты кода OneScript из 1С:Предприятие и получать результаты выполнения

1 стартмани

03.11.2018    8874    6    blackhole321    19       

Синхронизация хранилища 1С и git-репозитория с применением OneScript и Gitsync. Методика и пошаговая инструкция для создания скрипта и его регулярного запуска 189

Статья Системный администратор Программист Архив с данными v8 Абонемент ($m) OneScript

- Настройка репозитория для работы с большими типовыми конфигурациями  - Алгоритм создания скрипта выгрузки и его исходный код  - Обработка исключительных ситуаций  - Рекомендации по дальнейшему развитию процесса 

1 стартмани

14.09.2018    20359    24    Vladimir Litvinenko    87       

Виртуальная дисконтная карта на OneScript 19

Инструменты и обработки Программист Конфигурация (md, cf) v8 УУ Оптовая торговля Розничная торговля Абонемент ($m) OneScript

В статье рассмотрены возможности http-сервисов OneScript для создания бизнес-приложений, на примере демонстрационной конфигурации, реализующей функционал виртуальной дисконтной карты.

1 стартмани

17.07.2018    5715    4    blackhole321    6       

Платежи через RoboKassa из web-приложения OneScript 16

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) OneScript

В статье рассмотрен пример организации платежей из web-приложения OneScript через платежную систему RoboKassa

1 стартмани

27.06.2018    5323    4    blackhole321    0       

Создаем сайт ресторана на OneScript 91

Инструменты и обработки Программист Конфигурация (md, cf) v8 Рестораны, кафе и фаст-фуд Абонемент ($m) OneScript

В статье изучаются возможности http-сервисов OneScript по созданию web-приложений на примере сайта ресторана

1 стартмани

19.06.2018    11985    16    blackhole321    63       

HTTP-сервисы OneScript. Каркасная конфигурация 2.0 63

Инструменты и обработки Программист Архив с данными v8 Абонемент ($m) OneScript

В статье описана новая версия конфигурации для создания web-приложений на основе http-сервисов OneScript в среде 1С:Предприятие.

1 стартмани

05.06.2018    10575    27    blackhole321    6       

Упрощаем разработку взаимодействия с СУБД в http-сервисах OneScript 14

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) OneScript

В статье описана библиотека и подсистема, позволяющие упростить разработку взаимодействия с СУБД в http-сервисах OneScript

1 стартмани

30.05.2018    5821    2    blackhole321    1       

Yep Cart. Пишем интернет-магазин на http-сервисах OneScript 44

Статья Программист Конфигурация (md, cf) v8 УУ Оптовая торговля Розничная торговля Абонемент ($m) OneScript

В статье описана демонстрационная конфигурация, реализующая простейший интернет магазин на http-сервисах OneScript, интегрированный с 1С:Предприятие.

1 стартмани

16.04.2018    9778    15    blackhole321    33       

Фоновые задания в http-сервисах OneScript 49

Статья Программист Архив с данными Абонемент ($m) OneScript

В статье описана библиотека, реализующая механизм фоновых заданий в http-сервисах OneScript, а также некоторые обновления платформы 1.0.19

1 стартмани

28.03.2018    12638    4    blackhole321    14       

Yep - простая flat-file CMS на OneScript 40

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) OneScript

В статье рассмотрено создание простейшей flat-file CMS, на основе каркасной конфигурации для web-приложений OneScript, в среде 1С:Предприятие.

1 стартмани

02.03.2018    11796    7    blackhole321    32       

Конфигурация для создания web-приложений OneScript из 1С:Предприятие 112

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) OneScript

В статье описана методика создания web-приложений OneScript на основе каркасной конфигурации в среде 1С:Предприятие

1 стартмани

23.02.2018    16682    20    blackhole321    67       

Создаем "кроссплатформенную" библиотеку для OneScript и 1С:Предприятие 48

Статья Программист Конфигурация (md, cf) v8 Абонемент ($m) OneScript

Описана методика создания внешних компонент для OneScript и 1С:Предприятие, переносимых на уровне прикладного кода.

1 стартмани

05.02.2018    11846    4    blackhole321    7       

Знакомимся с HTTP-сервисами в OneScript 76

Статья Программист Архив с данными v8 1cv8.cf Абонемент ($m) OneScript

В статье описан механизм HTTP-сервисов в OneScript, а также приведен пример интеграции и совместной работы с 1С:Предприятие

1 стартмани

15.01.2018    14513    18    blackhole321    15       

OneScript SQL - работа с СУБД 113

Инструменты и обработки Программист Архив с данными Абонемент ($m) OneScript

Внешняя компонента, реализующая возможность работы с базами данных из OneScript (https://infostart.ru/public/548028/ , https://infostart.ru/public/327581/). Поддерживаются базы: sqlite, MS SQL Server, MySQL, PostgreSQL.

1 стартмани

12.09.2017    17164    16    ret-Phoenix    35       

OneScript и Ajax. Создание GET-запроса 6

Инструменты и обработки Программист Архив с данными ИТ-компания Россия Абонемент ($m) OneScript

Создание GET-запроса на OneScript с помощью библиотеки UfaScript.osb. Описание шаблона OneScript.zip для Joomla. Главный файл шаблона Index.php генерируется функциями из библиотеки UfaScript.osb.

1 стартмани

05.06.2017    6819    andreosh    0       

Функционал Gulp на OneScript 3

Инструменты и обработки Программист Архив с данными Россия Абонемент ($m) OneScript

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

1 стартмани

05.06.2017    7227    andreosh    1       

Примеры скриптов на OneScript 140

Инструменты и обработки Системный администратор Архив с данными Россия Windows Абонемент ($m) OneScript

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

1 стартмани

14.07.2016    24899    39    Drak0n    43       

Как решать повседневные задачи с помощью OneScript 465

Статья Системный администратор Программист Документ XML Абонемент ($m) OneScript

Если вам не нравится выполнять рутинные операции вручную. Если вы 1С-ник, который хоть раз в жизни писал BAT-CMD-файлы для автоматизации, или который время от времени вынужден вспоминать особенности черной магии Powershell, то эта статья для вас. Теперь можно все это делать на языке 1С. Интересно? Читайте дальше!

1 стартмани

04.02.2015    67394    17    Evil Beaver    211