4

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

我们尝试发布的组件中包含 pdf 和 jpg。它还具有与其他组件的链接。

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

一些组件在很长一段时间后发布,一些失败抛出内存异常

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

4

3 回答 3

4

这是设计使然,如果您想阻止 SDL Tridion 解析这些附加项目,您将需要修改发送给发布者的说明。如果您使用的是 SDL Tridion 2009 或更早版本,则需要使用事件系统执行此操作。如果您使用的是 2011 或更高版本,则可以利用新的自定义解析器。也许您可以指定您使用的版本。

如果您在 2011 年,请查看有关自定义解析器的这篇文章:http ://www.tridiondeveloper.com/a-custom-resolver-in-practice

如果您在 2009 年,您可能会发现这个 Event 示例很方便

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);

    }
}
于 2012-06-13T21:32:46.120 回答
2

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

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

于 2012-06-13T21:33:21.683 回答
2

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

  • 二进制发布
  • 动态模板
  • 被物品使用

二进制发布

您的模板通常会发布多媒体项目:

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

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

每个动态模板

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

“使用者”控制传播链接到的 项目不应发布(上述二进制文件除外)。反之亦然——使用您的项目已发布的项目会被发布。这包括具有链接到您的项目的项目或组件的页面。

如何检查

  • Where Used将显示哪些项目正在使用您的项目。
  • 发布项目时,Show Items to Publish选项应与上述匹配。

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

于 2012-06-14T17:29:23.773 回答