我们注意到组件发布需要很长时间。
我们尝试发布的组件中包含 pdf 和 jpg。它还具有与其他组件的链接。
查看日志,我们发现发布者正在尝试从组件发布多媒体项目,以及从链接组件发布 MM 组件。链接的组件有更多的链接组件。
一些组件在很长一段时间后发布,一些失败抛出内存异常。
这是 Tridion 中的错误吗?有没有人遇到过这个问题?
我们注意到组件发布需要很长时间。
我们尝试发布的组件中包含 pdf 和 jpg。它还具有与其他组件的链接。
查看日志,我们发现发布者正在尝试从组件发布多媒体项目,以及从链接组件发布 MM 组件。链接的组件有更多的链接组件。
一些组件在很长一段时间后发布,一些失败抛出内存异常。
这是 Tridion 中的错误吗?有没有人遇到过这个问题?
这是设计使然,如果您想阻止 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);
}
}
发布一个“连接良好”的组件确实很常见,它会触发大量要包含在该发布操作中的项目。在这种情况下,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
选项应与上述匹配。除了扩展解析器之外,还要寻找要发布的正确项目。例如,不是发布从页面链接的组件,而是让作者发布页面或链接(未链接到)组件。