XslCompiledTransform的最快内存缓存

时间:2009-03-05 18:31:47

标签: xslt xslcompiledtransform

我有一组xslt样式表文件。我需要生成XslConpiledTransform的最快性能,所以我想在内存中表示这些样式表。

我可以在应用程序启动时将它们作为IXpathNavigable加载到内存中集合中,然后在每个请求上将每个IXPAthNavigable加载到singleton XslCompiledTransform中。 但这仅适用于没有xsl:import或xsl:include的样式。 (Xsl:import仅适用于文件)。

我也可以为每个模板加载许多XSLCompiledTransform实例。这是合理的吗?

还有其他方法吗?哪个最好?什么是提高MS Xslt处理器性能的另一个技巧?

2 个答案:

答案 0 :(得分:3)

Load()的实例上成功执行XslCompiledTransform后,可以缓存此实例以获得更好的性能

请记住Load()是一项非常昂贵的操作。

答案 1 :(得分:1)

您可以使用MS SDK工具xsltc.exe(XSL编译器)生成程序集,而不是在运行时编译和缓存XSL转换。

在运行时,您的应用程序将动态加载这些程序集(或者您只需向应用程序添加静态引用)并调用重载的XslCompiledTransform.Load(System.Type类型)方法来加载您编译到XSL中的类型组装

这是绝对最快的方法,因为您不会产生运行时的编译代价 - 仅在构建/编译时。