Статический клиентский контент в файловой системе
Glossary Item Box
Общие сведения
До версии 7.11 при запросе клиентского контента (*.js и *.css файлов) сервер приложения формировал его динамически, основываясь на текущей структуре связей между пакетами и зависимостями между схемами. Сформированные данные кэшировались и отправлялись клиентскому приложению.
Начиная с версии 7.11 весь клиентский контент предварительно генерируется в специальном каталоге приложения — становится статическим. При запросе клиентского контента сервер IIS ищет запрашиваемый контент в этом каталоге и сразу же отправляет его клиентскому приложению. Таким образом повышается общая производительность приложения и снижается нагрузка на сервер.
Преимущества и недостатки
Преимущества и недостатки использования статического клиентского контента приведены в таблице 1.
Табл. 1. — Преимущества и недостатки использования статического клиентского контента
Преимущества | Недостатки |
---|---|
Генерация клиентского контента "на лету" |
|
Не нужно предварительно генерировать клиентский контент | Нагрузка на процессор при вычислении иерархии пакетов, схем и формировании контента |
Нагрузка на базу данных для получения иерархии пакетов, схем и формирования их контента | |
Потребление памяти для кеширования клиентского контента | |
Использование предварительно сгенерированного клиентского контента |
|
Минимальная нагрузка на процессор (CPU) | Необходимо предварительно генерировать клиентский контент |
Отсутствуют запросы в базу данных | |
Клиентский контент кешируется средствами IIS |
Генерация статического клиентского контента
Клиентский контент генерируется в специальный каталог .\Terrasoft.WebApp\conf. В нем содержатся *.js-файлы с исходным кодом схем, *.css-файлы стилей и *.js-файлы ресурсов для всех культур приложения.
Начиная с версии 7.11.1 в каталоге .\Terrasoft.WebApp\conf также содержатся изображения.
Для каталога .\Terrasoft.WebApp\conf должны быть установлены права на модификацию (чтение и запись файлов и вложенных каталогов, а также удаление каталога) для пользователя пула IIS, в котором запущено приложение. В противоположном случае приложение Creatio не сможет сгенерировать статический контент.
Имя пользователя пула IIS устанавливается в свойстве [Identity]. Доступ к этому свойству можно получить через команду меню [Advanced Settings] на вкладке [Application Pools] менеджера IIS.
Действия, при которых выполняется генерация клиентского контента
Первичная или повторная генерация статического клиентского контента выполняется при следующих действиях в системе:
- Сохранение схемы через дизайнеры клиентских схем и объектов.
- Сохранение через мастера разделов и деталей.
- Установка и удаление приложений из Marketplace и zip-архива.
- Применение переводов.
- Действия [Компилировать все] и [Компилировать измененное] в разделе [Конфигурация].
При удалении схем или пакетов из раздела [Конфигурация] необходимо выполнить действие [Компилировать измененное] или [Компилировать все].
При установке или обновлении пакета из SVN также необходимо выполнить действие [Компилировать все].
Только действие [Компилировать все] выполняет полную перегенерацию клиентского статического контента. Остальные действия выполняют перегенерацию только измененных схем.
Генерация клиентского контента с помощью утилиты WorkspaceConsole
В утилиту WorkspaceConsole была добавлена операция BuildConfiguration, которая выполняет генерацию клиентского контента. Параметры операции приведены в таблице 2.
Табл. 2. — Параметры операции BuildConfiguration
Параметр | Описание |
---|---|
workspaceName | Название рабочего пространства. По умолчанию Default. |
destinationPath | Каталог, в который будет сгенерирован статический контент |
webApplicationPath |
Путь к веб-приложению, из которого будет вычитана информация по соединению с базой данных. Необязательный параметр. Если значение не указано, то соединение будет установлено с базой данных, указанной в строке соединения в файле Terrasoft.Tools.WorkspaceConsole.config. Если значение указано, то соединение будет установлено с базой данных из файла ConnectionStrings.config веб-приложения. |
force |
Если установлено значение true, то выполняется генерация контента по всем схемам. Если false, то выполняется генерация для измененных схем. Необязательный параметр. По умолчанию установлено значение false. |
Примеры использования:
Terrasoft.Tools.WorkspaceConsole.exe -operation=BuildConfiguration -workspaceName=Default -destinationPath="C:\WebApplication\Creatio\Terrasoft.WebApp" -force=true -logPath=C:\wc\log
Terrasoft.Tools.WorkspaceConsole.exe -operation=BuildConfiguration -workspaceName=Default -webApplicationPath="C:\WebApplication\Creatio" -destinationPath="C:\WebApplication\Creatio\Terrasoft.WebApp" -force=true -logPath=C:\wc\log
Совместимость с режимом разработки в файловой системе
На текущий момент режим разработки в файловой системе (РФС) не совместим с получением клиентского контента из предварительно сгенерированных файлов. Для корректной работы с РФС необходимо отключить получение статического клиентского контента из файловой системы. Для отключения данной функциональности нужно установить значение false для флага UseStaticFileContent в файле Web.config.
<fileDesignMode enabled="true" /> ... <add key="UseStaticFileContent" value="false" />
Генерация клиентского контента при добавлении новой культуры
После добавления новых культур из интерфейса приложения необходимо выполнить действие [Компилировать все] в разделе [Конфигурация].
Если пользователь не может войти в систему после добавления новой культуры, то необходимо зайти в раздел [Конфигурация] по ссылке http://[путь к приложению]/0/dev и выполнить действие [Компилировать все].
Изменения в объекте параметров, необходимом для формирования URL изображения (версия 7.11.1)
Изображения в клиентской части Creatio всегда запрашиваются браузером по определенному URL, который устанавливается в атрибуте src html-элемента img. Для формирования этого URL в Creatio используется специальный модуль Terrasoft.ImageUrlBuilder (imageurlbuilder.js), в котором реализован публичный метод получения URL изображения — getUrl(config). Этот метод принимает специальный конфигурационный JavaScript-объект config, в свойстве params которого содержится объект параметров, на основе которого формируется URL изображения для вставки на страницу.
До версии 7.11.0 включительно структура объекта params была следующей:
config: { params: { schemaName: "", resourceItemName: "", hash: "" } }
Здесь:
- schemaName — название схемы (строка);
- resourceItemName — название изображения в Creatio (строка);
- hash — хэш изображения (строка).
Начиная с версии 7.11.1 в перечень параметров добавлено строковое свойство resourceItemExtension, содержащее расширение файла изображения (например, ".png"). Новая структура объекта params:
config: { params: { schemaName: "", resourceItemName: "", hash: "", resourceItemExtension: "" } }
Если объект params формируется в пользовательском программном коде (а не получен из ресурсов), то, начиная с версии 7.11.1, в него необходимо добавлять свойство resourceItemExtension. В противоположном случае изображение будет получено из базы данных, а не из статического контента. В следующих версиях возможность получения изображения из базы данных планируется отключить. Следовательно, отсутствие свойства resourceItemExtension приведет к возникновению ошибок с загрузкой изображений на страницу.
Пример корректного формирования конфигурационного объекта параметров для получения URL статического изображения:
var localizableImages = { AddButtonImage: { source: 3, params: { schemaName: "ActivityMiniPage", resourceItemName: "AddButtonImage", hash: "c15d635407f524f3bbe4f1810b82d315", resourceItemExtension: ".png" } } }