2

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

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

我也可以为每个模板加载许多 XSLCompiledTransform 实例到缓存中。合理吗?

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

4

2 回答 2

3

Load()在一个实例上成功执行后XslCompiledTransform,这个实例可以被缓存以达到更好的性能

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

于 2009-03-06T04:07:26.587 回答
1

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

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

这是绝对最快的方法,因为您不会招致运行时的编译惩罚 - 仅在构建/编译时。

于 2010-04-30T15:34:46.577 回答