发布最终会发布许多组件并耗尽内存

时间:2012-06-13 21:16:23

标签: tridion

我们注意到组件发布需要很长时间。

我们试图发布的组件包含pdf和jpg。它还包含指向其他组件的链接。

查看日志,我们发现发布商正在尝试发布组件中的多媒体项目以及链接组件中的MM组件。链接的组件具有更多链接的组件。

某些组件在很长一段时间后发布,而某些组件会导致内存异常

这是Tridion中的错误吗?有没有人遇到过这个问题?

3 个答案:

答案 0 :(得分:4)

这是设计使然,如果您想阻止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);

    }
}

答案 1 :(得分:2)

发布“连接良好”的组件可以触发大量项目包含在该发布操作中,这确实很常见。在这种情况下,Tridion在确定要包含哪些链接项时通常采用全有或全无的方法。

如果您想要更好地控制发布的内容,您应该考虑编写自定义解析器,如下所述:http://www.tridiondeveloper.com/a-custom-resolver-in-practice

答案 2 :(得分:2)

弗兰克弗兰克所指的雪崩通常来自3个部分:

  • Binary Publishing
  • 动态模板
  • 按项目使用

二元发布

您的模板通常使用以下内容发布多媒体项目。

  • addbinary()
  • 较旧的publishbinary()(在XSLT组件模板中)和/或
  • Publish Binaries in Package模板构建块(TBB),它是Default Finish Actions TBB的一部分。

如果我们跳过这个,作者需要单独发布多媒体,通常使用动态组件模板。

每个动态模板

多个动态组件模板可以为每个动态组件表示发布二进制文件。三个动态模板可能意味着三倍(二进制)发布请求。此外,如果您的逻辑收集这些链接,任何给定的模板都可以在其他组件中发布二进制文件。

“使用”控件传播 链接到项目不应发布(上面的二进制文件除外)。反过来了 - 已发布的项使用您的项目已发布。这包括具有链接到项目的项目的页面。

如何检查

  • Where Used会显示正在使用您商品的商品。
  • 发布项目时,Show Items to Publish选项应与上述内容匹配。

除了扩展解析器之外,还要查找要发布的正确项目。例如,代替发布从页面链接的组件,让作者发布页面或链接(未链接到)组件。