Публикация заканчивается публикацией многих Компонентов и заканчивается нехватка памяти
Мы заметили, что публикация компонентов занимает много времени.
Компонент, который мы пытаемся опубликовать, содержит PDF и JPG. Он также имеет ссылки на другие компоненты.
Просматривая журналы, мы обнаружили, что издатель пытается публиковать мультимедийные элементы из компонента, а также компоненты MM из связанных компонентов. Связанные компоненты имеют больше связанных компонентов.
Некоторые компоненты публикуются через долгое время, а некоторые выдают исключение памяти.
Это ошибка в Tridion? Кто-нибудь сталкивался с этим вопросом раньше?
3 ответа
Это сделано специально, если вы хотите, чтобы SDL Tridion не разрешал эти дополнительные элементы, вам нужно будет изменить инструкции, отправляемые издателю. Если вы используете SDL Tridion 2009 или более раннюю версию, вам потребуется сделать это с помощью системы событий. Если у вас версия 2011 года или более поздняя, вы можете воспользоваться новыми настраиваемыми резольверами. Возможно, вы можете указать, какую версию вы используете.
Если вы работаете в 2011 году, ознакомьтесь с этой статьей о пользовательских резольверах: http://www.tridiondeveloper.com/a-custom-resolver-in-practice
Если вы находитесь на 2009, вы можете найти этот пример под рукой
public void OnComponentPublishPre(Component Component, IXMLDOMDocument2 publishInstruction)
{
//Code to prevent publishing linked components
XmlNode nodePropagateLinks = (XmlNode)publishInstruction.selectSingleNode("ResolveComponentLinks");
if (nodePropagateLinks == null)
{
IXMLDOMNode nodeResolveLinks = publishInstruction.createNode(XmlNodeType.Element, "ResolveComponentLinks", "http://www.tridion.com/ContentManager/5.0");
nodeResolveLinks.text = "false";
publishInstruction.documentElement.appendChild(nodeResolveLinks);
}
}
Действительно, довольно часто публикация "хорошо связанного" компонента может вызвать лавину элементов, которые будут включены в это действие публикации. В этом случае Tridion часто использует подход "все или ничего" при определении того, какие связанные элементы следует включить.
Если вам нужен больший контроль над тем, что публикуется, вам следует подумать о написании специального распознавателя, как описано здесь: http://www.tridiondeveloper.com/a-custom-resolver-in-practice
Лавина, на которую ссылается Франк, обычно состоит из трех частей:
- Бинарное Издательство
- Динамические шаблоны
- Используется предметами
Бинарное Издательство
Ваши шаблоны публикуют мультимедийные элементы, как правило, с:
addbinary()
- старший
publishbinary()
(в шаблонах компонентов XSLT) и / или Publish Binaries in Package
шаблонный блок (TBB), который является частьюDefault Finish Actions
TBB.
Если мы пропустим это, авторам нужно публиковать мультимедиа отдельно, обычно с динамическим шаблоном компонента.
По динамическому шаблону
Несколько динамических шаблонов компонентов могут публиковать двоичные файлы для каждой презентации динамического компонента. Три динамических шаблона могут означать в три раза больше (двоичных) запросов на публикацию. Кроме того, любой данный шаблон может публиковать двоичные файлы в других компонентах, если ваша логика собирает эти ссылки.
"Используется" Управляет распространениемСвязанные элементы не должны публиковаться (кроме двоичных файлов, указанных выше). И наоборот - уже опубликованные элементы, использующие ваш элемент, публикуются. Это включает в себя страницы, на которых есть элемент или компоненты, ссылающиеся на ваш элемент.
Как проверить
Where Used
покажет, какие предметы используют ваш товар.- При публикации элемента
Show Items to Publish
вариант должен соответствовать вышеописанному.
В дополнение к расширению распознавателя, найдите правильные элементы для публикации. Например, вместо публикации компонентов, связанных со страницей, авторы должны публиковать страницу или связывать (не связанный) компонент.